Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment :faire correspondre (espace de recherche) à (joindre une colonne d'une autre table)

Il semble que vous deviez utiliser une expression de correspondance FULLTEXT dans votre condition de jointure.

Je n'ai jamais utilisé de correspondance de texte intégral dans une condition de jointure, donc je ne suis pas sûr que cela fonctionnera, mais hypothétiquement, cela pourrait le faire :

SELECT DISTINCT c.*
FROM corpuses c JOIN searches s 
  ON (MATCH(c.title, c.body) AGAINST (s.term));

Ok, je l'ai essayé en utilisant vos définitions de table et quelques exemples de données du manuel MySQL. Voici une requête qui fonctionne (testée avec MySQL 5.1.30) :

SELECT *
FROM corpuses 
WHERE MATCH(title, body)
  AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches) 
    IN BOOLEAN MODE);