Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] trudne zapytanie
aras785
post 6.02.2014, 10:09:42
Post #1





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Witam. Mam takie 4 tabelki:

Kod
Produkty:

ID, NAZWA

Cechy_Prod

PROD_ID,CECHA_ID

Cechy

ID, NAZWA, WARTOSC

Filtry
ID,NAZWA,IDC (id cechy), MIN, MAX



I przykładowo mamy w produktach dużo produktów.
W tabeli "Cechy" posiadam wartości: 1, Szerokość, 20
W tabeli "Cechy_prod" (jakieś tam id produktów które mają tą ceche, 1 (- id cechy)
W tabeli "Filtry" 1, Nowy filtr, 1 (-id cechy), 1,40

I teraz jak mam wyrzucić produktu ktore posiadają kilka cech i należy sprawdzić czy pasują do filtra (idc min, max)

Mój pomysł póki co:

  1. SELECT produkty.* FROM produkty JOIN cechy_prod ON produkty.id=cechy_prod.prod.id JOIN cechy ON cechy.id=cechy_prod.cecha.id JOIN filtry ON filtry.idc=cecha.id WHERE cecha.id IN(1 itd)


I teraz nie potrafię zrobić tak aby dla każdej cechy (może być ich kilka dla produktu). Czyli dla szerokosci (id cechy to 1) sprawdzic czy wartosc pasuje do min i max questionmark.gif

Proszę o pomoc. Pozdrawiam

smile.gif

Ten post edytował aras785 6.02.2014, 10:09:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
-Gość-
post 6.02.2014, 10:12:26
Post #2





Goście







AND wartosc BETWEEN min max ?
Go to the top of the page
+Quote Post
aras785
post 6.02.2014, 10:26:32
Post #3





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


A co jeśli mamy 2 cechy (szerokość - 20 i wysokość - 100) no i 2 filtry na szerokość i wysokość.

I po polsku tak:

Wyrzuć produkty z tabeli produkty gdzie występuje cecha szerokość i cecha wysokość oraz cecha szerokość jest pomiędzy min max z tabeli filtry dla tej cechy (id odpowiednie) i to samo z wysokością? Nie wiem jak sprawdzić dokładnie wartości dla ID filtrów i cech... bo przecież nie mogę dać na sztywno WHERE filtr.min<cecha.wartosc WHERE cecha.id=1 AND ... ponieważ każdy produkt może mieć inne cechy itd.

Ten post edytował aras785 6.02.2014, 10:27:21
Go to the top of the page
+Quote Post
nospor
post 6.02.2014, 10:34:28
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Musisz dac tyle LEFT JOIN cechy ile bedziesz chcial sprawdzic cech i dla kazdej zrobic warunek przy pomocy AND w WHERE. Oczywiscie kazde LEFT JOIN cechy musi miec wlasny alias


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:21