Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] trudne zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
aras785
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
Gość
AND wartosc BETWEEN min max ?
aras785
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.
nospor
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
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.