2010-10-14 3 views
1

У меня есть 3 таблицы (окрестности, города, штаты), и я пытаюсь перечислить 10 лучших лучших совпадений (если не фактическое совпадение) для данного поискового термина , Что мне нужно сделать, так это иметь это, если есть совпадение названия соседства, пусть оно будет выше, чем совпадение имени города. Меня смущает то, что если он найдет окрестности, мне нужно будет дать мне окрестности, город и штат, но если это город, просто дайте мне город и штат.MySQL Полнотекстовый поиск по нескольким таблицам с дифференцированным ранжированием

Это то, что у меня есть на данный момент, что дает мне только матчи города. Как я могу смешать окрестности с этими результатами?

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 

ответ

1

Используйте союз для разных запросов и закажите их по ранге.

(Query1) СОЕДИНЕНИЕ (Query2) ORDER BY DESC бального

сохранить количество полей в запросах же и тх же порядок. - http://dev.mysql.com/doc/refman/5.0/en/union.html