Bonjour,

Je dois résoudre un probleme qui me semble assez difficile

Je dois créer une requete SQL pour un moteur de recherche par tags.
J'ai 3 tables : article, tag, relation. la table relation est composé juste de article.id et tag.id.

J'aimerais pouvoir rechercher les articles correspondent à plusieurs tags via l'id de ces tags.

Par exemple un article numéro 1 est relié aux tags : chat et chien
et un autre numéro 2 aux tags : chat et poisson.

Si je recherche chat chien je ne dois trouver que l'article numéro 1 et non pas le 2 vu qu'il n'est associé qu'a chat et pas chien.

Voici ma requete :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT DISTINCT
       f, articles.id, price,url
  FROM articles
       INNER JOIN relationships
         ON relationships.article_id = articles.id
       INNER JOIN tags
         ON tags.id = relationships.tag_id
 WHERE articles.st = 0
   AND relationships.tag_id IN (1191, 163)
 LIMIT 100
1191 et 163 correspond aux ids des tags inclu dans ma recherche, cette requete marche mais retourne les articles qui ont pour tags 1191 OU 163 et j'aimerais qu'il ne retourne que les articles qui ont pour tags 1191 ET 163 ...

Merci de votre aide