Requête SQL où TOUS les enregistrements dans une jointure correspondre à un état?

J'ai ce qui semble être un problème simple, mais ne peut pas trouver la bonne solution via SQL. Je suis de l'utilisation de postgresql en particulier.

Prendre le suivant:

SELECT * FROM users INNER JOIN tags ON (tags.user_id = users.id) WHERE tags.name IN ('word1', 'word2')

Ce n'est pas ce dont j'ai besoin. Je veux trouver des utilisateurs dont les balises sont UNIQUEMENT inclus dans la liste. Si l'utilisateur a une balise qui n'est pas dans la liste, l'utilisateur ne doit pas être inclus.

'user1' tags: mot1, mot2, terme3
'user2' tags: mot1
la "user3" tags: mot1, mot2

Donné: mot1 et mot2. Je veux préparer une requête qui renvoie 'user2' et 'user3'. 'user1' est exclu parce qu'il a une balise qui n'est pas dans la liste.

J'espère que je l'a fait comprendre. Merci pour votre aide!

double possible de SQL, comment faire correspondre?
N'avez-vous pas juste de demander ce
Devrait les utilisateurs qui n'ont pas de balises à tous renvoyés?
Non, ma question précédente nécessaire de trouver des utilisateurs qui avaient toutes les balises, et c'était la seule exigence. Celui-ci nécessite des utilisateurs qui disposent de balises en dehors de la liste. Le problème est différent.
Non, un utilisateur doit avoir au moins une balise.

OriginalL'auteur Binary Logic | 2011-01-21