Je travaille sur une base avec des livres qui ont des genres (plusieurs genres pour un livre). J'ai une liste de genres, et j'aimerais ressortir tous les livres qui sont liés à tous les genres sélectionnés. J'arrive avec un "... IN liste" à ressortir les livres qui sont liés à un des genres sélectionnés, mais je n'ai aucune idée de comment faire sinon... J'ai cherché un peu partout sur internet, sans succès... Est-ce que quelqu'un pourrait m'aider ?
Voici ma requête qui ressort tous les livres liés à un des genres sélectionnés :
SELECT uuid, livre.nom, couverture
FROM livre
INNER JOIN genre_livre ON livre.id = genre_livre.livre_id
WHERE genre_livre.genre_id IN (2,3)
Une solution est de compter les occurrences et de ne conserver que celle qui ont le même nombre que celui des genres cherchés :
SELECT
L.uuid,
L.nom,
L.couverture
FROM
livre L
INNER JOIN genre_livre GL
ON L.id = GL.livre_id
WHERE GL.genre_id IN ( 2, 3, 4 )
GROUP BY
L.uuid,
L.nom,
L.couverture
HAVING COUNT(*) = 3 -- faire varier cela en fonction du nombre de valeur dans le IN
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Life is about more than just survival