Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]warunki w mysql
Forum PHP.pl > Forum > PHP
Regyam
Mam takie pytanie czy wie ktos jak zrobić coś takiego, mam:
  1. SELCT * FROM tabela WHERE cos = 1 OR cos LIKE 'co' OR cos = 'tak'

Takli przypadek wywali nam rekord gdzie zgadza sie chociaz jeden warunek
Chciałbym posegregowac to według ilosc "trafien" czyli jezeli 3 razy by sie zgadzalo to bylo by to wyzej niz jezeli warunek bylby spelniony 1 raz.
Czy ma ktoś jakiś pomysł na wykonanie tego?
rellend
mozesz wykonać zapytanie 3 razy:
1. wykonać tam gdzie spełnia wszystkie 3 warunki (3x AND)
2. wykonać tam gdzie spełnia 2 warunki
Kod
(cos = 1 AND cos LIKE 'co') OR (cos = 1 AND cos = 'tak') OR (cos LIKE 'co' AND cos = 'tak') AND NOT (cos = 1 AND cos LIKE 'co' AND cos = 'tak')

3. wykonać tam gdzie spełnia tylko 1 warunek
Regyam
no ale cos uniwersalnego bo to zapytanie bedzie generowane i nie mam mozliwosci robienia kilku zapytan bo to chyba mija sie z celem
.chudy.
Może zastosuj IF-ELSE w zapytani? Jeszcze bardzo ważne jest jakiej bazy używasz.
Regyam
W tytule posta uzylem dwa razy słowa MySQL tongue.gif
.chudy.
Faktycznie, nie zauważyłem sciana.gif . Jednak obawiam się, że jest to nie możliwe aby to zrobić w 1 pytaniu.
piotr94
Przepraszam z góry że odkopuję archaika, ale mam rozwiązanie, i może się ono przydać WSZYSTKIM
otóż:
  1. SELECT * FROM tabela WHERE pole LIKE '%szukana fraza1%' OR pole LIKE '%szukana fraza2%' ORDER BY (pole LIKE '%szukana fraza1%')+(pole LIKE '%szukana fraza2%') DESC

wyjaśnienie
wyrażenie
  1. pole LIKE '%szukana frazax%'
zwraca wartość 0 (jeśli nie odnaleziono) lub 1 jeśli tekst został znaleziony. Jeśli zsumujemy te prawdy i fałsze to wychodzi nam ilość trafień pojedynczych* i jeśli posortujemy w odwrotnej kolejności to osiągniemy taki efekt o jaki nam chodziło biggrin.gif
*chodzi o to, że dla przykładowego zapytania wartość pole='szukana fraza1 szukana fraza2 szukana fraza 1' będzie potraktowane tak samo jak pole='szukana fraza1 szukana fraza2'
życzę miłego korzystania z rozwiązania i piszcie, czy się to wam przydało biggrin.gif
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.