Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] SELECT, WHERE i trzy warunki
fka
post
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
 
Start new topic
Odpowiedzi (1 - 8)
ostrylg
post
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 (IMG:style_emoticons/default/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
Post #3





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

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


Click
Go to the top of the page
+Quote Post
fka
post
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
Post #5





Grupa: Moderatorzy
Postów: 36 559
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
Go to the top of the page
+Quote Post
fka
post
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
Post #7





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




W tym wypadku kolejnosc kolumn nie ma znaczenia.

ps; zjadles FROM TABELA (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
fka
post
Post #8





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

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


Dobra dobra (IMG:style_emoticons/default/tongue.gif) Dzięki wielkie za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
thek
post
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 (IMG:style_emoticons/default/smile.gif)
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: 27.09.2025 - 22:58