Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Filtrowanie produktów
Forum PHP.pl > Forum > Bazy danych > MySQL
vivi
Witam, mam pewien problem z poprawnym wyświetleniem produktów wg. wybranych kryteriów

tabela 'produkty'

id_produkt
nazwa

1 | produkt A
2 | produkt B
3 | produkt C

tabela 'elementy'

id_element
nazwa

1 | element A
2 | element B

tabela 'produkty_elementy'

id_produkt
id_element

1 | 1
2 | 1
2 | 2

Teraz chciałbym uzyskać wszystkie produkty dla których został wybrany (filtrowanie produktów) element A (1) oraz element B (2) - czyli powinienem otrzymać tylko produkt B (id_produkt 2)

  1. SELECT * FROM produkty_elementy WHERE id_element=1 OR id_element=2
takie zapytanie nie zadziała ponieważ w wyniku otrzymam produkt A oraz produkt B

  1. SELECT * FROM produkty_elementy WHERE id_element=1 AND id_element=2
takie zapytanie nie zadziała ponieważ w wyniku nie otrzymam żadnego produktu

Czy dla takiej struktury tabel da się uzyskać zamierzony efekt?
shine
poczytaj sobie o podzapytaniach/zapytaniach zagniezdzonych
phpion
Do pierwszego zapytania musisz dodać grupowanie (GROUP BY) oraz klauzulę HAVING COUNT(*) = 2. Dzięki temu zwrócisz tylko te rekordy, które spełniają równocześnie oba warunki.
vivi
Dzięki Panowie, gdyby ktoś potrzebował rozwiązanie:

  1. SELECT * FROM produkty_elementy WHERE id_element=1 OR id_element=2 GROUP BY id_produkt HAVING COUNT(*) = 2
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.