Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP + MySQL] Many-to-many - rekordy o wspólnych cechach
nadia_sk
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.10.2012

Ostrzeżenie: (0%)
-----


Produkt może składać się z wielu Cech i każda Cecha może wchodzić w skład wielu produktów. Relacje te są zapisywane w klasycznej tabeli z dwoma kolumnami:

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.

  1. SELECT cecha_id FROM tabela_many_to_many WHERE produkt_id = X



  1. SELECT p.produkt_id
  2. FROM produkty p
  3. INNER JOIN (SELECT mtm.produkt_id
  4. FROM tabela_many_to_many mtm
  5. INNER JOIN produkty p
  6. ON p.produkt_id = mtm.produkt_id
  7. WHERE mtm.cecha_id IN (id cech z zapytania nr 1)
  8. GROUP BY mtm.produkt_id
  9. HAVING Count(mtm.produkt_id) >= liczba_cech_z_zapytania_nr_1) d
  10. ON p.produkt_id = d.produkt_id
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 22:04