J'ai une liste de contacts, puis j'ai une liste de contacts bloqués. J'ai besoin d'interroger des contacts qui ne sont pas bloqués. Comment puis-je faire une requête où tous les contacts bloqués sont filtrés dans la requête sql?Comment puis-je interroger à partir de deux tables mais obtenir les résultats d'un seul?
0
A
Répondre
7
PSEUDO SQL:
SELECT * FROM CONTACTS as c WHERE c.ID NOT IN (SELECT ID FROM BLOCKEDCONTACTS)
3
Une autre solution possible serait:
SELECT *
FROM TblContacts AS C
LEFT JOIN TblBlockedContacts AS BC
ON C.ID = BC.ID
WHERE C.ID IS NULL
Je pense que cela devrait être plus performant que d'un NOT IN.
1
je peux suggérer une autre variante:
SELECT *
FROM CONTACTS as c
WHERE NOT EXISTS (SELECT *
FROM BLOCKEDCONTACTS as B
WHERE c.id=b.id)
Choisir cette variante ou l'une des deux autres dépendent des SGBD et des indices que vous utilisez.
3
Vous pouvez suivre le code de johan ou modifier votre db. Au lieu de 2 tables, faites-en une. Et ajoutez simplement un autre champ. Vous pouvez le nommer avec un type enum ("bloqué, débloqué");
Effectuez ensuite ceci:
Select * from contacts where status = 'unblocked';
De cette façon, vous donner le processeur sql travail facile car il accède à une seule table au lieu de se joindre à 2 ou plus.
Questions connexes
- 1. Comment joindre les résultats de deux tables dans Oracle 10
- 2. Interroger deux tables dans une mysql requête
- 3. Interroger plusieurs tables et renvoyer uniquement un seul tableau?
- 4. Instruction SQL à partir de deux tables
- 5. Sélection de données à partir de deux tables
- 6. Comment ajouter deux résultats de comptage (*) ensemble sur deux tables différentes?
- 7. Comment joindre deux tables à partir de deux bases de données différentes?
- 8. Comment joindre les résultats de deux tables dans un fichier de sortie?
- 9. Nav table - besoin d'informations à partir de deux tables différentes
- 10. Comment puis-je obtenir des noms de tables à partir d'une base de données MS Access?
- 11. Comment obtenir tous les résultats de regex?
- 12. MySQL/PHP - Interroger un jeu de résultats?
- 13. Linq to SQL: comment obtenir les valeurs de propriété à partir des résultats d'une requête?
- 14. Comment interroger efficacement trois tables liées (JPA-QL)
- 15. Comment interroger deux tables selon que l'enregistrement existe ou non dans un tiers?
- 16. requête SQL à partir des résultats usp
- 17. Fusion de deux ensembles de résultats statistiques
- 18. ADO.NET Entity: obtenir des données à partir de 3 tables
- 19. Comment obtenir les résultats de Matlab en Java?
- 20. Comment combiner deux résultats jQuery
- 21. SQL: Sélectionnez comme colonne de deux tables
- 22. Comment utiliser une jointure pour interroger deux tables et obtenir toutes les lignes d'une table et les lignes connexes de l'autre?
- 23. Comment combiner/fusionner des colonnes à partir de deux résultats de requête SQL?
- 24. Fusion de deux tables
- 25. en ajoutant l'horodatage d'Oracle pour interroger les résultats
- 26. Comment obtenir des informations sur les tables utilisées à partir d'une requête traitée?
- 27. Comment joindre deux tables sur une colonne, qui a le même nom dans les deux tables?
- 28. MySql: Sélection à partir de plusieurs tables
- 29. SELECT à partir de diverses tables, avec une liste d'index
- 30. SQL SELECT à partir de plusieurs tables
MISE À JOUR: Merci pour toutes les réponses, je voudrais savoir comment je peux aussi limiter ces résultats, parce que quand j'ajoute ma LIMIT à la requête SQL de Rudolph, ma requête échoue. – newbie
Ok, maintenant, quand j'ai ajouté LIMIT à la fin de cette requête, cela a fonctionné. merci pour toutes les réponses – newbie