Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]warunki w mysql
Regyam
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Regyam 13.12.2007, 16:13:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
rellend
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.12.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował rellend 13.12.2007, 17:51:09
Go to the top of the page
+Quote Post
Regyam
post
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

Ostrzeżenie: (0%)
-----


no ale cos uniwersalnego bo to zapytanie bedzie generowane i nie mam mozliwosci robienia kilku zapytan bo to chyba mija sie z celem
Go to the top of the page
+Quote Post
.chudy.
post
Post #4





Grupa: Zarejestrowani
Postów: 70
Pomógł: 3
Dołączył: 15.06.2003
Skąd: kosmosu?

Ostrzeżenie: (0%)
-----


Może zastosuj IF-ELSE w zapytani? Jeszcze bardzo ważne jest jakiej bazy używasz.
Go to the top of the page
+Quote Post
Regyam
post
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

Ostrzeżenie: (0%)
-----


W tytule posta uzylem dwa razy słowa MySQL (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
.chudy.
post
Post #6





Grupa: Zarejestrowani
Postów: 70
Pomógł: 3
Dołączył: 15.06.2003
Skąd: kosmosu?

Ostrzeżenie: (0%)
-----


Faktycznie, nie zauważyłem (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) . Jednak obawiam się, że jest to nie możliwe aby to zrobić w 1 pytaniu.
Go to the top of the page
+Quote Post
piotr94
post
Post #7





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował piotr94 21.07.2010, 10:50:23
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:37