Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jakość dopasowania
Forum PHP.pl > Forum > Bazy danych
TomASS
Hej!

Chcę zrobić wyszukiwarkę, w której użytkownik zaznacza jak bardzo go dana informacja interesuje (w skali 1-5).
Mamy np. rekordy modeli aut. Parametry to kolor, wielkość silnika, ilość drzwi

I np. użytkownik wybiera

kolor czerwony - bardzo by chciał - daje 5pkt
kolor niebieskie - może być - daje 2pkt

silnik diesel - bardzo by chciał - 5pkt
silnik benzyna - taki sobie - 1pkt


i teraz chce wybrać zapytanie mysql rekordy pod względem "dopasowania"
np. auto czerwone, benzynowe ma 6pkt, a lepiej jak by było niebieskie i diesel (7pkt). Chciałbym dostać wyniki posortowane właśnie po tej cyfrze.


Próbowałem coś takiego:
  1. SELECT IF(Kolor LIKE '%czerwony%',(SET @var=5),'no')
  2. FROM modele

ale wywala się na (set....) a poza tym jak później wybrać i posortować po takim czymś :/

Niezły orzech mam do zgryzienia:/
erix
  1. SELECT IF(id>2, "asd", "Y") AS x FROM tabela

winksmiley.jpg
TomASS
Niestety nic to nie da - jak teraz zsumować 3 warunki i to z różnymi wagami?
erix
No jak nic nie da? To był tylko przykład - zamiast if zrób sobie case i ustawiaj wartość.
  1. SELECT IF(id>2, "asd", "Y") AS x FROM tabela ORDER BY x
TomASS
Napiszę to w pseudo SQLu:

  1. SELECT IF(Kolor LIKE '%czerwony%',(SET @var+=5)), IF(Silnik> 2,(SET @var+=5)), IF(Paliwo = 'diesel',(SET @var+=5))
  2. FROM modele

Widzisz tam są 3 ify. Jeśli auto będzie spełniało wszystkie warunki to var=15, jeśli jeden to 5.... jeśli żaden to 0.
erix
Rozumiem. winksmiley.jpg Ale jaki masz problem zrobić coś takiego:
  1. SELECT IF(1, 5, 0)+IF(1, 5, 0) AS x FROM tabela

? winksmiley.jpg

Gdzie 1 = warunek. Będziesz miał wszystko posumowane w polu X dla danego samochodu. winksmiley.jpg
TomASS
Dobre! Dzięki smile.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.