W zapytaniu SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5 kluczowe są dwa elementy: filtrowanie w WHERE oraz ograniczenie liczby wyników przez LIMIT.
1) Jak działa WHERE z AND
Warunek typ < 3 AND cena < 30 jest koniunkcją: rekord przechodzi dalej tylko wtedy, gdy spełnia oba kryteria jednocześnie. To znaczy, że nie wystarczy spełnić jednego z nich.
2) Dlaczego "cena = 30" odpada
Operator "<" oznacza ściśle mniejsze. Dlatego wartości równe granicy (np. 30) nie spełniają warunku cena < 30. To częsty błąd: traktowanie "<" jak "≤".
3) Zastosowanie warunków do danych z tabeli
- typ < 3 przepuszcza tylko typy 1 i 2 (rekordy z typem 3 są odrzucone niezależnie od ceny).
- cena < 30 przepuszcza tylko ceny 29 i mniej, więc wszystkie rekordy z ceną 30, 35, 40 itd. odpadają.
Po sprawdzeniu rekordów widać, że oba warunki spełniają wyłącznie dwa wiersze: te, w których jednocześnie typ jest mniejszy od 3 i cena jest mniejsza od 30.
4) Rola LIMIT 5
LIMIT nie jest kolejnym warunkiem logicznym. On tylko mówi: "zwróć maksymalnie 5 wierszy z tego, co zostało po filtracji". Skoro po WHERE są tylko 2 pasujące rekordy, to LIMIT 5 nic nie ucina — wynik nadal ma 2 wiersze.
Dlaczego pozostałe odpowiedzi są błędne?
Wyniki 5, 8 lub 13 zwykle biorą się z jednego z typowych nieporozumień: doliczenia rekordów z ceną równą 30 (błędna interpretacja "<"), policzenia rekordów spełniających tylko jeden warunek (pomylenie AND z OR) albo zliczenia całej tabeli bez realnej filtracji. Poprawne podejście to zawsze sprawdzenie każdego wiersza względem obu warunków.