Два полнотекстовых поиска mysql с объединением, но возвращают отдельное поле - PullRequest
0 голосов
/ 28 октября 2010
SELECT DISTINCT sectionID FROM (
  (SELECT sectionID,MATCH (content) AGAINST ('blah') AS relevance
   FROM sectioncontent WHERE MATCH (content) AGAINST ('blah')) AS alias

  UNION DISTINCT

  (SELECT sectionID,MATCH (name, description) AGAINST ('blah') AS relevance
   FROM sections WHERE MATCH (name, description) AGAINST ('blah'))  
) 

Я бы в конечном итоге использовал GROUP BY и ORDER BY, но я не могу заставить работать вышеперечисленное. Любая точка в правильном направлении будет высоко ценится, спасибо!

Это то, что я изначально использовал, но он вернул бы два результата с одинаковым sectionID (один из таблицы разделов и один из таблицы sectioncontent), поскольку поля релевантности были не одинаковыми.

(SELECT sectionID,MATCH (content) AGAINST ('blah') AS relevance
 FROM sectioncontent WHERE MATCH (content) AGAINST ('blah')) 

UNION DISTINCT 

(SELECT sectionID,MATCH (name, description) AGAINST ('blah') AS relevance
 FROM sections WHERE MATCH (name, description) AGAINST ('blah'))
ORDER BY relevance DESC


sectionID relevance
32        6.42576837539673
32        2.10306763648987

1 Ответ

0 голосов
/ 29 октября 2010

Разобрался, вот решение для всех, кто может столкнуться с этим

SELECT sectionID,sum(relevance) FROM (

SELECT sectionID,MATCH(content) AGAINST ('blah') as relevance
FROM sectioncontent WHERE MATCH(content) AGAINST ('blah')

UNION

SELECT sectionID ,MATCH(name,description) AGAINST ('blah') as relevance
FROM sections WHERE MATCH(name,description) AGAINST ('blah')

) as tmptable GROUP BY sectionID ORDER BY relevance DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...