2010-10-28 7 views
0
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')) 
) 

J'utiliserais éventuellement GROUP BY et ORDER BY mais je n'arrive pas à faire fonctionner ce qui précède. Tout point dans la bonne direction serait très apprécié, merci!Deux recherches mysql en texte intégral avec union mais retour d'un champ distinct

C'est ce que j'utilisais à l'origine, mais il retournerait deux résultats avec le même sectionID (un de la table section et un de la table sectioncontent) puisque les champs de pertinence n'étaient pas les mêmes.

(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 
+0

Pouvez-vous fournir une alter table pour vos deux tables, afin que je puisse les créer localement? –

+0

Pouvez-vous expliquer plus en détail, pourquoi vous unioning votre table à elle-même? –

+0

Vous ne savez pas ce que vous voulez dire par alter. Ce que j'ai, c'est deux tables, sections et contenu de section. Les sections ont le nom de la section, la description et d'autres champs qui se rapportent à la section. – Sam

Répondre

0

figured it out, voici la solution pour quelqu'un d'autre qui peut venir à travers cette

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