Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jakość dopasowania, zapytanie z parametrami
TomASS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


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:/

Ten post edytował TomASS 6.03.2009, 20:37:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. SELECT IF(id>2, "asd", "Y") AS x FROM tabela

(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Niestety nic to nie da - jak teraz zsumować 3 warunki i to z różnymi wagami?
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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
Go to the top of the page
+Quote Post
TomASS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


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.
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Rozumiem. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ale jaki masz problem zrobić coś takiego:
  1. SELECT IF(1, 5, 0)+IF(1, 5, 0) AS x FROM tabela

? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Gdzie 1 = warunek. Będziesz miał wszystko posumowane w polu X dla danego samochodu. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
TomASS
post
Post #7





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Dobre! Dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 3.10.2025 - 22:55