[MySQL] Pobieranie produktów według konkretnych połączeń z tablą pośrednią

0

Witam serdecznie,

Mam 3 tabele:

  • tab_products - lista produktów
  • tab_rel - lista łącząca produkty z grupami (productId, groupId)
  • tab_groups - grupy

I teraz załóżmy w tabeli grup mamy 2 grupy: A i B.
W tabeli produkty mamy 3 produkty: product1, product2 i product3.
W tabeli grupy mamy grupy: A i B. I teraz product1 jest połączony z grupą A, product2 z grupą B, natomiast product3 z grupą A i B.

Teraz potrzebuje zapytania takiego aby pobrać produkty wyłącznie należące do grupy A i B, czyli powinno wypluć produkt product3.

Zapytanie z klauzulą IN() odpada, ponieważ ona działa na zasadzie OR, czyli jak dam

... WHERE groupId IN (A, B)

Wybierze produkty, które należą do A i/lub B, co oznacza wszystkie produkty.

Dzięki za podpowiedź!

2
select * from  tab_products  join  tab_rel  on (tab_products.id   = tab_rel.productID ) 
 join tab_groups  on (tab_groups.id = tab_rel.groupId ) 
where   tab_groups .groupId IN (A, B) group by  tab_products.id  having count(*) =2 --ilosc grup
0

Dzięki!

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