Salut tous le monde,

Petit soucis qui me tarabusque depuis un certain temps deja, mais dont je n'ai pas encore la soluc
donc je me decide à vous poser la question
Merci de vos lumieres;

en partant du principe que j'ai 3 tables:
livres; (id, titre, note)
users; (id, name)
users_livres; (users_id, livres_id, vu)

Si je veux afficher tous les titres de livres qui ont une note >4 mais que l'utilisateur n'a jamais vu

SELECT l.titre
FROM livres l
LEFT OUTER JOIN users_livres lu ON lu.livres_id = l.id
WHERE lu.users_id = ?
AND lu.vu <> 1
AND l.livres > 4

evidemment ca, ca marche pas

SELECT l.titre
FROM livres l
LEFT OUTER JOIN (select * from users_livres WHERE users_id = ? AND vu <> 1)lu ON lu.livres_id = l.id
WHERE  l.livres > 4

et ca non plus

3 réponses


Grafikart
Réponse acceptée
SELECT *
FROM livres
LEFT JOIN users_livres ON users_livres.livres_id = livres.id AND users_livres.users_id = <TonUser> 
WHERE livres.note > 4 AND users_livres IS NULL
driven78
Auteur

bordel, j'etais pourtant sur de l'avoir utilisé cette requette, mais bon ca marche, dc super, merci grafiart

Quand je ne sais plus, je regarde là : SQL Joins