Posiadam 3 tabele [relacja wiele do wielu]:
CREATE TABLE `tag` ( `tag_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`tag_id`), UNIQUE KEY `name` (`name`) ); CREATE TABLE `tagmap` ( `id` int(11) NOT NULL AUTO_INCREMENT, `video_id` int(11) NOT NULL, `tag_id` int(11) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `artykul` ( `id` int(11) NOT NULL AUTO_INCREMENT, `link` varchar(245) NOT NULL, `data` date NOT NULL, `tytul` varchar(245) NOT NULL, PRIMARY KEY (`id`) );
Tagmap to tabela łącząca tabele artykul i tag. Chciałbym tak połączyć 3 tabele i wyświetlić te rekordy, które posiadają okreslone przeze mnie wartosci w tabeli tag. Czyli chciałbym pobrać te artykuły, które posiadają okreslone przeze mnie tagi - dokladnie dwa - nie wiecej i nie mniej. Czyli podaje np. tagi "test1" i "test2" i otrzymuje artykuły posiadające te tagi ale tylko te które posiadają te dwa tagi a nie jeden. Zrobiłem takie coś ale to wlasnie pobiera artykul albo z jednym albo drugim tagem albo z dwoma:
$tags = ' SELECT * FROM tagmap vt, video v, tag t WHERE vt.tag_id = t.tag_id AND (t.name IN (\''.$tag_name.'\')) AND v.id = vt.video_id GROUP BY v.id';
$tag_name to zmienna z tagami rozdzielonymi ','
Orientuje sie może ktoś jak ugryżć ten temat?