Wyszukiwanie po kategoriach

0

Witam, mam pewien prosty problem jednak nie bardzo wiem jak go rozwiązać.
Mam trzy proste tabelki:

tabela filmy o kolumnach id_filmu, tytul
tabela gatunki_filmowe o kolumnach id_gatunku, nazwa
tabela gatunki_w_filmie o kolumnach id_filmu, id_gatunku

do każdego filmu może być przyporządkowanych wiele gatunków

I teraz pytanie jak skonstruować zapytanie, które zwróci mi filmy np. będące jednocześnie komediami i dramatami (np. id_kategorii 1 i 2).

Ukręciłem coś takiego:

SELECT * FROM filmy JOIN gatunki_w_filmie USING(id_filmu) WHERE id_gatunku IN (1,2) GROUP BY id_filmu

ale niestety zwraca mi i komedie i dramaty, a nie filmy będące jednocześnie jednym i drugim.

dodanie znacznika <code class="sql"> - @furious programming

0

zrob 2 inner joiny, jeden z warunkiem na komedie, drugi z warunkiem na dramat

0

Poproszę o przykład. Oczywiście skrypt ma działać na dowolną liczbę kategorii, ale to już PHPem będę rozbudowywał zapytanie.

1
SELECT 
  id_filmu
FROM 
  filmy 
JOIN gatunki_w_filmie USING(id_filmu)
WHERE 
  id_gatunku IN (1,2) 
GROUP BY 
  id_filmu
HAVING count(id_filmu) >= 2

ostatnia linijka mówi, że film musi występować conajmniej w dwóch wymienionych gatunkach. Podobnie możesz zrobić dla np.3

EDIT:
jeszcze taka uwaga - jeśli w przypadku powyżej ktoś doda jeden film dwa razy do gatunku 1 to ten film też się pokaże mimo iż nie będzie w dwóch gatunkach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1