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!
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
Vous devez vous connecter pour publier un commentaire.
En s'appuyant sur COUNT(*) = 2 exigera qu'il peut y avoir des doublons de user_id et le nom de la table tags. Si c'est le cas, j'aimerais aller dans cette voie. Sinon, cela devrait fonctionner:
M: Vous avez raison. J'ai mis à jour ma réponse pour tenir compte de cela maintenant. Je vous remercie pour elle.
DISTINCT
est juste extra frais généraux ici...OriginalL'auteur
ou
eu la tâche de mal, merci pour le tuyau.
OriginalL'auteur
À tous les utilisateurs qui n'ont pas de balise qui n'est pas dans la liste, utilisez la requête ci-dessous. Peut être que les utilisateurs sont renvoyés qui n'ont pas de tag ou une seule balise correspondant aux mots, mais je comprends que c'est la fonctionnalité désirée.
OriginalL'auteur
OriginalL'auteur
OriginalL'auteur