Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Wyszukiwanie parametrów przedmiotu
Forum PHP.pl > Forum > Przedszkole
JamalBIG
Witam

Postaram się przedstawić problem możliwie zrozumiale, jeżeli coś będzie niezrozumiałe, dajcie znać;

Tabela 'parametry_przedmiotu':

|id|przedmiot_id|parametr_id|parametr_wartosc|
|--+--------------+-------------+--------------------|
|1 | 99 | 20 | biały |
|--+--------------+-------------+--------------------|
|2 | 99 | 21 | długi |
|--+--------------+-------------+--------------------|
|3 | 99 | 22 | szklany |
|--+--------------+-------------+--------------------|
|4 | 80 | 20 | biały |
|--+--------------+-------------+--------------------|
|5 | 79 | 22 | metalowy |
|--+--------------+-------------+--------------------|

Z powyższej tabeli potrzebuje wyszukać przedmioty z 'paramter_id' 20 i 21 oraz 'parametr_wartosc': biały i szaklany - (czyli powinienem otrzymać 'przedmiot_id': 99) stosowałem 'AND' i 'OR' ale nie zwracają pożądanego rezultatu;
c1chy
  1. SELECT przedmiot_id FROM parametry_przedmiotu WHERE parametr_id IN(20,21) AND parametr_wartosc IN ('bialy','szklany');

JamalBIG
A w jaki sposób wyszukać dodatkowo przedział gdy 'parametr_wartosc' wynosił by np. 8 (można jakoś umieścić przedział w IN?)
c1chy
Tak po przecinku umieszczasz wartości jakie mają zostać dopasowane
JamalBIG
Możesz mi podać przykład takiego przedziału w IN?
c1chy
po prostu po przecinku dodajesz kolejne opcje które chcesz dopasować np:

  1.  
  2. WHERE parametr_wartosc IN ('bialy','szklany',8)
JamalBIG
Ale chodzi mi o przedział czyli jeżeli nie znam konkretnej liczby tylko przedział np. 4 a 10
c1chy
do przedziałów masz BETWEEN
JamalBIG
Wiem, że używa się BETWEEN ale przy jego użyciu wyciągnę jeden rekord a co jeżeli tabela wygląda następująco:

|id|przedmiot_id|parametr_id|parametr_wartosc|
|--+--------------+-------------+--------------------|
|1 | 99 | 20 | biały |
|--+--------------+-------------+--------------------|
|2 | 99 | 21 | długi |
|--+--------------+-------------+--------------------|
|3 | 99 | 22 | szklany |
|--+--------------+-------------+--------------------|
|4 | 80 | 20 | biały |
|--+--------------+-------------+--------------------|
|5 | 79 | 22 | 8|
|--+--------------+-------------+--------------------|
|6 | 79 | 20 | 7|
|--+--------------+-------------+--------------------|
|7 | 79 | 21 | 6|
|--+--------------+-------------+--------------------|
|8 | 79 | 22 | 5|
|--+--------------+-------------+--------------------|

I chcę wyciągnąć rekordy z 'parametr_wartosc': biały, szklany oraz z liczbą między 5 a 7 - biały i szklany wrzucę w IN a przedział?
c1chy
możesz to zrobić na kilka sposobów akurat przedział 5-7 nie jest duży ale załóżmy że byłby większy można np tak:

  1. WHERE parametr_wartosc IN('bialy','szklany') OR parametr_wartosc BETWEEN 5 AND 7


Generalnie musisz poćwiczyć łączenie warunków i wszystko wtedy wyda się jasne.

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.