![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 2.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam sobie formularz wyszukiwania danych w bazie i zauważyłem, że zapytanie pobierające dane rozszerzone o 10 nowych pól pobiera za każdym razem pobieraz mi wszytskie rekordy z bazy ;/ dane z formularza pobieram, tak: Natomiast zapytanie wygląda następująco:
Gdzie jest błąd? Struktura tabeli wygląda tak:
Z góry dziękuję za wszelkie odpowiedzi i sugestie! (IMG:style_emoticons/default/smile.gif) Pozdrawiam, amdziak |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma żadnego błędu, Twoje zapytanie po prostu pobiera wszystkie rekordy, bo klauzula where obejmuje wszystkie wiersze. Wystarczy, że jakaś zmienna z POSTa jest pusta, to dostajesz "kolumna like '%'" - czyli dowolna wartość w tej kolumnie przejdzie, a w where wszystkie warunki są połączone OR więc dla każdego wiersza będzie to spełnione.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 2.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Więc jak sformułować zapytanie, aby dla dowolnego pola, albo kilku było ok?
Dzięki za szybką odpowiedź |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Te warunki OR dodawaj tylko jeśli odpowiednia zmienna z POSTa nie jest pusta.
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Po pierwsze, to chyba pomyliła ci sie logika. Powiedzmy ze ktos w pole imie wpisaj JAN, w nazwisko KOWALSKI. To wg. Ciebie szukka kogos o imieniu JAN lub nazwisku KOWALSKI, a raczej jest tak, ze ktos wowcza szuka kogos o imieniu JAN i nawisku KOWALSKI.
Zamiast OR powinno byc AND Po drugie, jak juz wpsomniano, warunki w mysql masz tworzyc dopiero gdy dane pole jest wypelnione http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html ps: znasz jeszcze jakies inny typy niz VARCHAR? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 2.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki - o to chodziło (IMG:style_emoticons/default/smile.gif)
faktycznie, powinny byc and'y zamiast or'ow... Oczywiście, że znam i to bardzo wiele, ale że to jest jakaś importowana baza to pola poszły najmniej inwazyjne, czyli varchary, chociaż wolałbym varchar2 (IMG:style_emoticons/default/biggrin.gif) mam pytanie: dlaczego zapytanie zalezne od warunku nie dziala mi z like?
pytanie jest niewazne: wszystko bylo, ok - wyswietlilem sobie zapytanie echem i zobaczylem, ze brakuje '%' ;/ Dzięki jeszcze raz wszystkim za pomoc! (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 00:06 |