2010-10-14 3 views
1

J'ai actuellement 3 tables (quartiers, villes, états) et j'essaie de lister les 10 meilleures correspondances (si ce n'est pas une correspondance réelle) pour un terme de recherche donné . Ce que je dois faire est de l'avoir si il y a un match de nom de voisinage, avoir un rang plus élevé qu'un match de nom de ville. Ce qui me dérange, c'est que si elle trouve un quartier, j'en aurais besoin pour me donner le quartier, la ville et l'état mais si c'est une ville, donnez-moi juste la ville et l'état.MySQL Recherche plein texte sur plusieurs tables avec un classement différencié

C'est ce que j'ai en ce moment, ce qui me donne juste des matchs de ville. Comment puis-je mélanger les quartiers dans ces résultats?

SELECT c.id_city, c.city_name, s.state_abbreviation, 
     MATCH(c.city_name) AGAINST ('term') AS score 
FROM `res_geo_cities` AS c, `res_geo_states` AS s 
WHERE MATCH(c.city_name) AGAINST ('term' IN BOOLEAN MODE) 
     AND s.id_state = c.id_state 
ORDER BY score DESC 
LIMIT 7 

Répondre

1

Utilisez union pour les différentes requêtes et les ordonner par le rang.

(query1) UNION (query2) ORDER BY partition DESC

garder le nombre de champs dans les requêtes les mêmes et tha même ordre. - http://dev.mysql.com/doc/refman/5.0/en/union.html

Questions connexes