Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> select tych samych wartosci przy roznych warunkach
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


hej, tytul postu pewnie malo jasny, ale zaraz wyjasnie o co mi chodzi. mam tabele test_props ktora trzyma propertisy wartosci z tabeli test_gl.
test_props ma takie pola:

  1. id - PRIMARY KEY
  2. test_gl_id - FOREIGN KEY do tabeli test_gl
  3. name - nazwa properties
  4. value - wartosc properties


ja chcialabym miec takiego sql'a ktory bedzie mi wyciagl dane z tej tabeli na podstawie kilku wartosci properties. chcialabym aby to pytanie dzialalo na takiej zasadzie:

  1. SELECT *
  2. FROM test_props
  3. WHERE 1
  4. AND value = '337' WHERE name = 'name_1'
  5. AND value = 'jakas wartosc' WHERE name = 'name_2'



czyli aby wyciagnelo takie pozycje, dla ktorych value wynosi 337 gdy name = 'name_1' oraz 'jakas_wartosc' gdy name = 'name_2'

da sie to w jakis sposob zrobic?

pzdr

moze podam przyklad. zalozmy ze w tabeli test_props mamy po 3 wpisy odpowiednio dla test_gl_id = 1, 2 i 3:

dla test_gl_id =1 sa wpisy:
  1. name - 'name_1', value - 'value_1'
  2. name - 'name_2', value - 'value_2'
  3. name - 'name_3', value - 'value_3'


dla test_gl_id = 2 sa wpisy:
  1. name - 'name_1', value - 'value_1'
  2. name - 'name_22', value - 'value_22'
  3. name - 'name_3', value - 'value_33'


zas
dla test_gl_id =1 sa wpisy:
  1. name - 'name_1', value - 'value_1'
  2. name - 'name_2', value - 'value_2'
  3. name - 'name_3', value - 'value_3'



i ja chce miec teraz takiego selecta, ktory wyciagnie mi te test_gl_id dla ktorych value = 'value_1' gdy name = 'name_1' oraz dla ktorych value = 'value_3' podczas gdy name = 'name_3' - czyli powinno mi znalezc tet_gl_id 1 oraz 3

Ten post edytował misty 30.09.2011, 08:32:52
Go to the top of the page
+Quote Post
luckyps
post
Post #2





Grupa: Zarejestrowani
Postów: 153
Pomógł: 41
Dołączył: 28.06.2011
Skąd: Częstochowa

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


O cos takiego Ci chodzi ?
  1. ... WHERE (value = '337' AND name = 'name_1') OR (value = 'jakas wartosc' AND name = 'name_2' )

Go to the top of the page
+Quote Post
misty
post
Post #3





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


nie, bo takie zapytanie zwroci mi test_gl_id 1, 2 oraz 3 (bazuje na moim przykladzie wyzej, tak bedzie prosciej). bo bedzie spelione ze albo value = 'value_1' gdy name='name_1' albo value ='value_3' gdy name = 'name_3'

i w przypadku ktory podales test_gl_id = 2 tez sie zalapie bo spelni warunek ze value= 'value_1' gdy name = 'name_1'

a prawdilowymi wynikami powinno byc test_gl_id = 1 i 3, poniewaz tylko dla nich spelnione sa oba warunki (posiadaja value = 'value_1' przy name='name_1' i value = 'value_2' przy name = 'name_2')

mam nadz ze napisalam klarownie o co chodzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




  1. SELECT t1.id FROM test_props t1
  2. FROM test_props t2 ON t1.test_gl_id=t2.test_gl_id
  3. WHERE
  4. t1.value = '337' AND t1.name = 'name_1' AND
  5. t2.value = 'jakas wartosc' AND t2.name = 'name_2'

Go to the top of the page
+Quote Post
misty
post
Post #5





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


hmm, nie wiem czy sie tak daa, dostaje err:

  1. USE near 'FROM test_props t2 ON t1.test_gl_id=t2.test_gl_id WHERE t1.value = '337'
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




zamiast drugiego FROM miało być LEFT JOIN... no nie kopiuj bezmyślnie (IMG:style_emoticons/default/tongue.gif) Wpadłaś w pułapkę, którą umyślnie zastawiłem (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
misty
post
Post #7





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


szczerze to chyba nie skumalam tego zapytania na poczatku i przyznam szczerze-nie wpadlabym na niego na pewno.

wielkie dzieki za pomoc!
Go to the top of the page
+Quote Post

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: 24.12.2025 - 02:35