Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Wyszukiwanie parametrów przedmiotu
JamalBIG
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


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;

Ten post edytował JamalBIG 23.06.2013, 14:25:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
c1chy
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 16
Dołączył: 21.06.2013

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


  1. SELECT przedmiot_id FROM parametry_przedmiotu WHERE parametr_id IN(20,21) AND parametr_wartosc IN ('bialy','szklany');



--------------------
devstrefa.wordpress.com
Go to the top of the page
+Quote Post
JamalBIG
post
Post #3





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


A w jaki sposób wyszukać dodatkowo przedział gdy 'parametr_wartosc' wynosił by np. 8 (można jakoś umieścić przedział w IN?)
Go to the top of the page
+Quote Post
c1chy
post
Post #4





Grupa: Zarejestrowani
Postów: 72
Pomógł: 16
Dołączył: 21.06.2013

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


Tak po przecinku umieszczasz wartości jakie mają zostać dopasowane


--------------------
devstrefa.wordpress.com
Go to the top of the page
+Quote Post
JamalBIG
post
Post #5





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Możesz mi podać przykład takiego przedziału w IN?
Go to the top of the page
+Quote Post
c1chy
post
Post #6





Grupa: Zarejestrowani
Postów: 72
Pomógł: 16
Dołączył: 21.06.2013

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


po prostu po przecinku dodajesz kolejne opcje które chcesz dopasować np:

  1.  
  2. WHERE parametr_wartosc IN ('bialy','szklany',8)


--------------------
devstrefa.wordpress.com
Go to the top of the page
+Quote Post
JamalBIG
post
Post #7





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Ale chodzi mi o przedział czyli jeżeli nie znam konkretnej liczby tylko przedział np. 4 a 10
Go to the top of the page
+Quote Post
c1chy
post
Post #8





Grupa: Zarejestrowani
Postów: 72
Pomógł: 16
Dołączył: 21.06.2013

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


do przedziałów masz BETWEEN


--------------------
devstrefa.wordpress.com
Go to the top of the page
+Quote Post
JamalBIG
post
Post #9





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


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ł?
Go to the top of the page
+Quote Post
c1chy
post
Post #10





Grupa: Zarejestrowani
Postów: 72
Pomógł: 16
Dołączył: 21.06.2013

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


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.



--------------------
devstrefa.wordpress.com
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 Aktualny czas: 20.08.2025 - 06:24