Bonjour,
J'ai une BDD simple avec 1 table de données, 1 table de référence et 1 table de jointure. En simplifiant (je mets les champs entre parenthèses) :
- article (art_id, titre)
- tag (tag_id, nom)
- arttag (art_id, tag_id)
Je cherche à écrire une requête SELECT pour "tous les articles ayant à la fois tel et tel tag" (généralisable pour n tags).
Disons pour simplifier que je connais les id des tags qui m'intéressent. La jointureme donne le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM article NATURAL JOIN arttag NATURAL JOIN tag
Supposons que je sois intéressé par tous les billets d'humeur traitant de l'économie (tags 1 et 2), et uniquement ceux-là. La difficulté vient du fait que le "ET" porte sur des lignes différentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 art_id titre tag_id nom ... 1 xxx 1 économie 1 xxx 2 humeur 1 xxx 3 invité 2 yyy 1 économie 2 yyy 4 analyse ...
J'ai cherché avec une jointure ou une sous-requête (j'utilise MySQL, je ne sais pas si les sous-requêtes sont standard), mais je ne trouve rien de satisfaisant.
Merci pour votre aide !
Partager