![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 26.04.2003 Skąd: Łańcut Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to ze chce pobrac rekordy gdzie z tabeli 'nazwy' pole 'nazwa' pasuje do zmiennej $szukaj z tabeli 'opisy' pole 'opis' pasuje do zmiennej $szukaj Jezeli dodam warunek nazwy.id_dok=opisy.id_dok Nie zostana pobrane rekordy ktore: zawieraja tylko w polu nazwa szukane slowo ale w opisie ich juz nie ma zawieraja tylko w opisie szukane slowo ale w nazwie ich juz nie ma Na koniec chce zsumowac pkt_nazwa + pkt_opis w ten sposob i posortowac sumy malejaco: Jezeli pola nazwa i w opis zawieraja szukane slowo zeby suma wynosila 60 + 40 =100 Jezeli tylko pole nazwa zawiera szukane slowo suma wynosila 60 + 0 = 60 Jezeli tylko pole opis zawiera szukane slowo suma wynosila 0 + 40 = 40 Tak wygladaja tabele nazwy: id_dok | nazwa ------------------------- 1 |zielony 2 |czerwony 3 |niebieski 4 |zolty opisy: id_dok | opis ------------------------- 1 |kolor zielony jest cieply 2 |to kolor goracy 3 |niebieski jest kolorem zimnym, nie tak jak zielony 4 |zolty to kolor slonecznikow Zalozmy ze szukamy slowa: 'zielony' Chce otrzymac taki wynik id_dok | pkt | nazwa | opis --------------------------------------------------------------------------- 1 | 100 | zielony | kolor zielony jest cieply 3 | 40 | niebieski | niebieski jest kolorem zimnym, nie tak jak zielony Jak skonstruowac takie zapytanie do mysqla lub wspomoc sie ewentualnie php zeby uzyskiwac takie wyniki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
myśle, że takie zapytanie Ci całkowicie wystarczy:
PS: Nie pisałeś nic o silniku, ja sprawdzałem to na PostgreSQL |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 26.04.2003 Skąd: Łańcut Ostrzeżenie: (0%) ![]() ![]() |
Rzeczywiscie to zapytanie jest OK tyle ze proboje teraz dodac jeszcze trzeci warunek tak wyglada moje zapytanie juz konkretnie do tej bazy
Nie moge uzyskac 100 pkt nie bierze jakby pod uwage w pierwszym warunku THEN tabeli 'sklucze'. Natomiast gdy slowo wystepuje tylko w 'sklucze' punktuje na 35 pkt Co moze byc tego przyczyna. Ten post edytował gantel 22.02.2008, 14:42:06 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
hmm...
jest wiele możliwości... nie wiem co może być nie tak ... może mieć to związek z wielkością liter, może jeszcze w PHP użyj strtolower() a w zapytaniu:
ewentualnie użyj ILIKE. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 26.04.2003 Skąd: Łańcut Ostrzeżenie: (0%) ![]() ![]() |
Litery napewno nie maja znaczenia bo wprowadzam dokladnie takie jak sa w tym polu tabeli o ktora mi sie rozchodzi.
Pytales o silnik: mysql 5 LIKE i tak chce zamienic za chwile na MATCH() AGAINST() i dodac jeszcze do tego wspolczynniki trafnosci wuszukiwania pelnotekstowego |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie moge uzyskac 100 pkt nie bierze jakby pod uwage w pierwszym warunku THEN tabeli 'sklucze'. Natomiast gdy slowo wystepuje tylko w 'sklucze' punktuje na 35 pkt a może sklucze bierze pod uwagę, a nie bierze co najmniej jednego z dwóch pierwszych warunków? potestowałem sobie te zapytanie na mojej bazie, i wszystko mi działa bez problemu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:43 |