Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie: jedna fraza kilka pol w bazie
Forum PHP.pl > Forum > Bazy danych > MySQL
mduke
Widzialem na tym forum kilka podobnych watkow lecz zaden nie rozwiazuje mojego problemu wiec prosze o rade.

Sprawa wyglada tak :
jest sobie typowa tabela user: gdzie jest imie nazwisko i jeszcze jakies tam dane.
Na stronie natomiast mamy wyszukiwarke osob tylko z jednym polem input, gdzie mozemy wpisac imie i nazwisko.
I tu wlasnie pojawiaja sie schody. Sprawa moze wydawac sie trywialna, ale nie mam pomyslu jak to ugryzc zeby bylo dobrze i szybko.
W polu tym moge wpisac samo imie, samo nazwisko, lub imie i nazwisko, lub nazwisko i imie. Generalnie jak bym nie wpisal danych osoby ma ja wyszukac. Do tego jeszcze nazwisko moze skladac sie z kilku czlonow.

Probowalem :
select * from user where imie like '$zmienna' or nazwisko like '$zmienna', ale to nie sprawdza sie (co oczywiste) kiedy w inpucie podam imie i nazwisko.

Cos takiego jak to tez odpada: select * from user where concat(imie, nazwisko) like '$zmienna'.

Jakies pomysly? Dzieki
wiiir
  1. SELECT * FROM user WHERE imie LIKE '$zmienna'
  2. UNION ALL
  3. SELECT * FROM user WHERE nazwisko LIKE '$zmienna'


Uzupelnij tylko kolumny w select
mduke
Wydaje mi sie ze to nie rozwiaze mojego problemu. Jesli zmienna bedzie w postaci 'imie nazwisko', to zapytanie zwroci pusty wynik.
Crozin
Wyszukiwanie pełnotekstowe powinno załatwić sprawę dosyć prosto:
  1. SELECT ... WHERE MATCH(first_name, last_name) AGAINST (:query) > 0
Jeżeli jednak korzystasz z tabel InnoDB konieczne będzie wykorzystanie MySQL 5.6, bądź stworzenie tabeli MyISAM z kopią danych z głównej tabeli (id, first_name, last_name) i wyszukiwanie w niej.
mduke
Tabela jest InnoDb i taka musi byc ze wzgledu na transakcje. Hmm, kopia tabeli tylko po to zeby moc wyszukiwac jakos szczerze mowiac nie widzi mi sie. Sprobuje sie przelaczyc na 5.6. A moze jeszcze jakis inny pomysl? Dzieki
Crozin
Cytat
Hmm, kopia tabeli tylko po to zeby moc wyszukiwac jakos szczerze mowiac nie widzi mi sie.
Specjalnie dużo pracy z tym nie ma. Dodawanie, usuwanie oraz aktualizowanie rekordów z tabeli-kopii można zrealizować przy pomocy wyzwalaczy (ang. trigger) założonych na oryginalnej tabeli.
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.