Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL][PHP] Wyszukiwanie z sortowaniem 2 warunkowym?
Coolbob
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.10.2006

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


Witam!

Mam tabelę w MySQL-u z artykułami (id, tytuł, treść itd.). Zrobiłem wyszukiwarkę artykułów przeszukującą ich treść. Chciałbym teraz zmodyfikować sposób wyszukiwania aby uporządkować wyniki w ten sposób, że w pierwszej kolejności wyświetlają się artykuły, w tytule których znajduje się wyszukiwane słowo, a następnie pozostałe z sortowaniem wg trafności.
Mógłbym zrobić dwa SELECT-y tylko nie wiem jak zrobić by w drugim zapytaniu nie dublowały się wyniki z pierwszego zapytania... a może jakieś złożone pojedyńcze zapytanie...
Proszę o pomoc.

pozdrawiam
coolbob
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kyku
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 8
Dołączył: 21.11.2008

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


Przy większej bazie powyższe zapytanie zajedzie serwer.
Zainteresuj się wyszukiwaniem pełnotekstowym (full-text search)
mozna np. joinem
  1. SELECT pd.products_id, pd.products_name, p.products_price, MATCH (p.products_model) AGAINST ('LAA 0209' IN BOOLEAN MODE)
  2. OR MATCH (pd.products_name,pd.products_description) AGAINST ('LAA 0209' IN BOOLEAN MODE) AS score
  3. FROM products_description pd
  4. LEFT JOIN products p
  5. ON pd.products_id = p.products_id
  6. WHERE MATCH (p.products_model) AGAINST ('LAA 0209' IN BOOLEAN MODE)
  7. OR MATCH (pd.products_name,pd.products_description) AGAINST ('LAA 0209' IN BOOLEAN MODE)
  8. AND p.products_status = 1
  9. ORDER BY score DESC

albo unionem
  1. SELECT * FROM
  2. (SELECT title,message, MATCH(title, message) AGAINST('$keywords') AS score FROM news WHERE MATCH(title, message) AGAINST('$keywords')
  3. UNION
  4. SELECT title,message, MATCH(title, message) AGAINST('$keywords') AS score FROM downloads WHERE MATCH(title, message) AGAINST('$keywords')
  5. ...) a ORDER BY SCORE DESC


Ten post edytował kyku 26.09.2012, 07:56:10
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 16.10.2025 - 11:12