Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Żle działające zapytanie Select
Forum PHP.pl > Forum > Przedszkole
-Mati-
Mam takie zapytanie:

  1. SELECT id,tytul,licznik,link FROM `tabela1` WHERE match(tytul) against ('$wy' IN BOOLEAN MODE ) >= $minimalna_zgodnosc GROUP BY link ORDER BY match( tytul ) against ('$wy' IN BOOLEAN MODE) DESC, match( tytul ) against('$wy') DESC LIMIT


Zapytanie to zwraca wyniki, ale czasem zdarza się, że wynik jest nieaktualny, dlatego wprowadziłem do tabeli wiersz `check` który opisuje czy wynik ma być brany pod uwagę przy wyszukiwaniu.
Jeśli `check`=1 to dany wynik ma nie być uwzględniany a gdy `check`=0 wynik ma być uwzględniany.

Zmodyfikowałem odpowiednio zapytanie:

  1. SELECT id,tytul,licznik,link FROM `tabela1` WHERE match(tytul) against ('$wy' IN BOOLEAN MODE ) >= $minimalna_zgodnosc GROUP BY link ORDER BY match( tytul ) against ('$wy' IN BOOLEAN MODE) DESC, match( tytul ) against('$wy') AND `check`=0 DESC LIMIT


Sądziłem, że dostane takie same wyniki jak poprzednio tylko bez uwzględniania tych z check=1, jednak zapytanie zamiast zachować kolejność i rodzaj wyników tak jak robiło to poprzednie, tylko z pominięciem błędnych, wyświetla mi całkiem inne rekordy.

Jeśli np 1 zapytanie wyświetlało mi 5 rekordów w tym ten 5 był zły to teraz nie dostaje tego 5, ale pierwsze 4 to całkiem inne wyniki jak te zwracane w 1 przypadku co jest dla mnie konkretnie bez sensu, bo przecież wykluczam z tego zapytanie tylko to co ma check=1 !

Dlaczego to 2 zapytanie zwraca mi całkiem inne wyniki (inna kolejność) niż to 1 ?
Axexis
zamiast

  1. SELECT id,tytul,licznik,link FROM `tabela1` WHERE match(tytul) against ('$wy' IN BOOLEAN MODE ) >= $minimalna_zgodnosc [u]GROUP BY link ORDER BY match( tytul ) against ('$wy' IN BOOLEAN MODE) DESC, match( tytul ) against('$wy')[/u][b] AND `check`=0 DESC LIMIT[/b]



wystarczy dać

  1. SELECT id,tytul,licznik,link FROM `tabela1` WHERE match(tytul) against ('$wy' IN BOOLEAN MODE ) >= $minimalna_zgodnosc [b]AND `check`= 0[/b] [u]GROUP BY link ORDER BY match( tytul ) against ('$wy' IN BOOLEAN MODE) DESC, match( tytul ) against('$wy') DESC LIMIT[/u]


smile.gif
-Mati-
Thanks!
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.