Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] SELECT, WHERE i trzy warunki
Forum PHP.pl > Forum > Przedszkole
fka
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)
ostrylg
  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ć
pedro84
Click
fka
  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.
nospor
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
fka
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?
nospor
W tym wypadku kolejnosc kolumn nie ma znaczenia.

ps; zjadles FROM TABELA winksmiley.jpg
fka
Dobra dobra tongue.gif Dzięki wielkie za pomoc smile.gif
thek
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
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.