Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Warunek wielowieroszowy w dołączanej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
mdx
mam tabele:

PRO_PRODUCTS
-------------------
PRO_ID

PRP_PROPERTIES
--------------------
PRP_ID
PRP_PRO_ID
PRP_PRV_ID


I chcę pobrać produkty których wartość właściwości ma ściśle określoną grupę wartości.

Coś jak zapytanie:
  1. SELECT PRO.* FROM `PRO_PRODUCTS` AS `PRO` LEFT JOIN `PRP_PROPERTIES` AS `PRP` ON PRO.PRO_ID = PRP.PRP_PRO_ID WHERE PRP.PRP_PRV_ID IN( 41 , 56) GROUP BY PRO.PRO_ID

Tylko wszystkie warunki muszą być spełnione jednocześnie.

W podanym przykładzie chcę wybrać produkty których PRP_PRV_ID = 41 i równocześnie PRP_PRV_ID = 56 (nie LUB)

Jak to ogarnąć?
bartg
  1. WHERE PRP.PRP_PRV_ID=41 AND PRP.PRP_PRV_ID=56
?
mdx
Cytat(bartg @ 9.02.2009, 22:05:18 ) *
  1. WHERE PRP.PRP_PRV_ID=41 AND PRP.PRP_PRV_ID=56
?

no właśnie nie, bo ten warunek nigdy nie zostanie spełniony
kefirek
To daj zamist AND OR
mdx
Cytat(kefirek @ 9.02.2009, 23:20:55 ) *
To daj zamist AND OR

Chyba ktoś czegoś nie rozumie, albo ja czegoś nie rozumie bo już jest za późno.
OR da to samo co IN, a moim celem jest to by zostały spełnione wszystkie warunki, czyli ma być zrobiony Left Join tylko z tymi wierszami które mają:

PRP_PROPERTIES
--------------------
PRP_ID = X
PRP_PRO_ID = X
PRP_PRV_ID = 41
--------------------
PRP_ID = X
PRP_PRO_ID = X
PRP_PRV_ID = 56
--------------------

Dla OR rezulta będzie taki sam dla
PRP_PRV_ID = 41 OR PRP_PRV_ID = 56
co
PRP_PRV_ID = 41 OR PRP_PRV_ID = X
lub
PRP_PRV_ID = X OR PRP_PRV_ID = 56


Dla AND zwraca zawsze pusty rezultat bo warunek realizowany jest dla pojedynczego wiersza a w takim wypadku Nigdy nie może zostać spełniony gdy podamy więcej niż jeden parametr.

EDIT:

Chodziło mi o to:
  1. SELECT PRO.* FROM `PRO_PRODUCTS` AS `PRO`
  2. LEFT JOIN `PRP_PROPERTIES` AS `PRP1` ON PRP1.PRP_PRO_ID = PRO.PRO_ID
  3. LEFT JOIN `PRP_PROPERTIES` AS `PRP2` ON PRP2.PRP_PRO_ID = PRO.PRO_ID
  4. WHERE PRP1.PRP_PRV_ID = 1 AND PRP2.PRP_PRV_ID = 2
  5. GROUP BY PRO_ID


Ale czy przy 20 parametrach musze robić aż 20 joinów, nie da się szybciej ?
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.