Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] SELECT, WHERE i trzy warunki
fka
post 26.06.2010, 20:46:06
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.06.2010

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


Jak skonstruować zapytanie SELECT opierające się na trzech warunkach?
  1. SELECT * FROM TABLE WHERE pole1='cos' AND pole2 = 'drugie_cos' AND pole3 = 'tzrecie_cos' ORDER BY pole1

(wiem ze to zapytanie jest błędne, ale chciałem tylko ... zobrazować mój problem)
Go to the top of the page
+Quote Post
ostrylg
post 26.06.2010, 20:50:44
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 18
Dołączył: 11.12.2005
Skąd: Gdańsk

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


  1. SELECT * FROM TABLE WHERE (pole1='cos' AND pole2 = 'drugie_cos' AND pole3 = 'tzrecie_cos') ORDER BY pole1


dajesz warunki w nawias winksmiley.jpg chociaż i bez też powinno zadziałać

Ten post edytował ostrylg 26.06.2010, 20:51:27
Go to the top of the page
+Quote Post
pedro84
post 26.06.2010, 20:51:56
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Click


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
fka
post 26.06.2010, 20:59:39
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.06.2010

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


  1. SELECT * FROM TABLE WHERE (pole1='cos' AND pole2 = 'drugie_cos' AND pole3 = 'tzrecie_cos') ORDER BY pole1


Problem w tym, ze to nie pokazuje żadnego wyniku. Każda kombinacja i przestawienie, bez nawiasów czy z nimi - nic to nie daje. Wynik jest pusty.
Go to the top of the page
+Quote Post
nospor
post 26.06.2010, 21:05:54
Post #5





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




widać nie istnieje żaden rekord, który jednoczesnie spełnia wszystkie 3 warunki.
albo masz blad zapytania. Wykonujesz to w php? To mysql_error() prawde ci powie


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

"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
fka
post 26.06.2010, 21:09:35
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.06.2010

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


Acha. Czyli ta metoda jest całkowicie poprawna tak?
Mam jeszcze ostatnie pytanie. Czy wazna jest kolejnośc kolumn. Tzn moja tabela skłąda się:

-----------------------
Kol.1 | Kol.2 | Kol.3
-----------------------
bla | fasas | sdsdg

Czy jeśli piszę
  1. SELECT * WHERE kol3 = 'bla' AND kol2 = 'costam'

to popełniam błąd?
Go to the top of the page
+Quote Post
nospor
post 26.06.2010, 21:10:32
Post #7





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




W tym wypadku kolejnosc kolumn nie ma znaczenia.

ps; zjadles FROM TABELA winksmiley.jpg


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

"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
fka
post 26.06.2010, 21:12:00
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.06.2010

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


Dobra dobra tongue.gif Dzięki wielkie za pomoc smile.gif
Go to the top of the page
+Quote Post
thek
post 26.06.2010, 23:36:46
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli masz w warunku same AND to różnica kolejności kolumn jest widoczna w szybkości wykonania. Najlepiej już pierwszym warunkiem maksymalnie ograniczyć liczbę wierszy wyniku. Dzięki temu sprawdzenie drugiego będzie szukało w znacznie mniejszym zbiorze potencjalnych wyników i szybciej przeskoczy do sprawdzenia 3 warunku. Jeśli pojawiaą się OR, to niestety całość jest wolniejsza. Na szczęście znajomość logiki Boole'a pozwala skrócić ogromne warunki i przekształcać OR na AND w wielu wypadkach smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 - 12:14