Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] Przeszukiwanie bazy
Forum PHP.pl > Forum > Przedszkole
gazelek
Wyglada to tak: na jednej stronie uzytkownik wpisuje ciag znakow (imie, nazwisko, imie i nazwisko, nazwisko i imie), zmienna przesylana jest do kolejnej strony, gdzie ma zostac wykonane zapytanie szukajace wybranych uzytkownik w bazie. I teraz wymyslilem cos takiego:

Kod
$query="SELECT * FROM users WHERE (CONCAT(nazwisko,imie) OR CONCAT(imie,nazwisko) LIKE '%Kowalski%' OR '%Jan%'";


W przypadku, gdy w formularzu wpisze "Jan Kowalski" - wszystko jest ok. Jesli natomiast wpisze "Kowalski Jan" to pokaze mi rowniez Roberta Kowalskiego. Jesli zmienie warunek po LIKE z OR na AND, to nie otrzymam zadnych wynikow.

Probowalem sam rozwiazac ten problem. Wymyslilem dwa zapytania - jedno sprawdzi baze dla warunku CONCAT(imie,nazwisko), a drugie dla CONCAT(nazwisko,imie) - z tym, ze musze jakos wykluczyc powtarzajace sie wyniki, a nie usmiecha mi sie tworzyc tablicy, sortowac jej, a nastepnie wyrzucac powtorzenia. W przypadku 10 userow zlozonosc bedzie znikoma, ale dla 10 tys ludzi...?

Ma ktos jakis pomysl, jak rozwiazac powyzszy problem?
nevt
  1. SELECT * FROM users WHERE (CONCAT(nazwisko,imie) LIKE '%Kowalski%') AND (CONCAT(nazwisko,imie) LIKE '%Jan%');

powodzenia.
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.