Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Warunek wielowieroszowy w dołączanej tabeli
mdx
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.03.2003
Skąd: Warszawa

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


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ąć?

Ten post edytował mdx 9.02.2009, 23:51:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kefirek
post
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


To daj zamist AND OR
Go to the top of the page
+Quote Post
mdx
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.03.2003
Skąd: Warszawa

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


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 ?

Ten post edytował mdx 9.02.2009, 23:50:14
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: 7.10.2025 - 16:05