Considérons 3 tables users, users_x_objets et objets dans une relation many-to-many.
La table users défini les utilisateurs (PRIMARY user_id)
La table objets défini différents objets (PRIMARY objet_id UNIQUE objet_nom)
La table users_x_objets permet d'établir un rapport de possession entre les objets et les utilisateurs (PRIMARY user_id, objet_id)

J'essaye d'établir une requete ou je voudrais sélectionner les utilisateurs qui ont un chapeau et des gants mais pas de valise, pour le moment j'arrive à ça mais sans succès :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
SELECT u.* FROM users u
INNER JOIN users_x_objets x ON u.user_id=x.user_id
INNER JOIN objets o ON x.objet_id=o.objet_id
INNER JOIN objets m ON x.objet_id=m.objet_id
WHERE o.objet_nom IN ('chapeau', 'gants') AND m.objet_nom NOT IN ('valise') 
GROUP BY u.user_id
HAVING COUNT(u.user_id)=2
Si vous pouvez m'éclairer sur ce qui ne colle pas
Merci