2009-01-30 8 views
1

Je suis nul en requêtes SQL, donc cela peut être une question idiote. Cependant, voici à peu près ce que je voudrais faire:Comment faire: correspondre (espace de recherche) contre (joindre avec la colonne de l'autre table)

tableau stuff je voudrais corpus de recherche à travers titre corps ...

recherches // table liste de recherche termes à appliquer à terme
corpus ...

La requête que je voudrais écrire est plus ou moins comme suit: Je beleive je besoin d'une sorte d'une jointure, mais je ne suis pas sûr juste comment faire ça. De plus, je ne suis pas sûr que l'opérateur contre() prendra quelque chose en dehors d'un littéral - les docs ne semblaient pas mentionner de toute façon.

select * from où correspondance corpus (titre, corps) contre (SELECT terme de recherches);

J'utilise MySQL 5

Toutes les pensées sont grandement appréciés.

Merci! Brian

+0

S'il vous plaît poster plus de détails de vos structures de table lorsque vous posez des questions comme celle-ci. "SHOW CREATE TABLE corpus" et même pour les recherches. –

Répondre

1

Il semble que vous ayez besoin d'utiliser une expression correspondant à FULLTEXT dans votre condition de jointure.

Je ne l'ai jamais utilisé un match dans une jointure texte intégral condition, 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)); 

D'accord, 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é avec MySQL 5.1.30):

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

lors d'une inspection plus approfondie, ce n'est pas vraiment ce dont j'avais besoin - la concaténation de groupe regroupe tous les termes en un seul; J'ai besoin de les distinguer les uns des autres, alors je pense que je suis de retour à la case départ. merci pour les suggestions cependant. –

+0

Il est important d'être clair sur vos objectifs lorsque vous posez des questions. Bonne chance. –

Questions connexes