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

MySQL - Rechercher les lignes correspondant à toutes les lignes de la table jointe

Les jointures à gauche ne servent à rien si vous ne recherchez que des pistes contenant tous les mots. Je suppose que (trackid ,wordid ) la combinaison est unique dans les trackwords .

SELECT t.id
  FROM track as t,  trackwords as tw, wordlist as wl
 WHERE t.id=tw.trackid
   AND wl.id=tw.wordid
   AND wl.trackusecount>0 /* not sure what that is - you have it in your query */
   AND wl.word in ('folsom','prison','blues')
 GROUP by t.id
HAVING count(*) = 3

Cette requête bénéficierait d'index sur wordlist(word), trackwords(trackid,wordid) et track(id).