produkt_id cecha_id
W wyniku chcę uzyskać ID tych produktów, które mają co najmniej wszystkie cechy zadanego produktu o konkretnym ID. Czy jest na to jakieś w miarę proste i szybkie zapytanie, które pozwoli wyciągnąć mi tego typu dane? Próbowałam już różne złączenia tabeli, ale nie udało mi się.
Na razie wymyśliłam coś takiego, nie wiem, na ile to jest optymalne, ale działa w miarę sprawnie i poprawnie.
SELECT cecha_id FROM tabela_many_to_many WHERE produkt_id = X
SELECT p.produkt_id FROM produkty p INNER JOIN (SELECT mtm.produkt_id FROM tabela_many_to_many mtm INNER JOIN produkty p ON p.produkt_id = mtm.produkt_id WHERE mtm.cecha_id IN (id cech z zapytania nr 1) GROUP BY mtm.produkt_id HAVING Count(mtm.produkt_id) >= liczba_cech_z_zapytania_nr_1) d ON p.produkt_id = d.produkt_id