Prenons par exemple une application qui a des utilisateurs, chacun d'eux pouvant faire partie d'un groupe. Si nous voulons SELECT la liste des groupes qui n'ont pas de membres, quel serait le bon SQL? Je continue à me sentir comme si je suis sur le point de saisir la requête, puis il disparaît à nouveau.Sélectionnez tous les éléments d'une table qui n'apparaissent pas dans une clé étrangère d'une autre table
Points bonus - étant donné l'alternative senario, où il s'agit d'un appariement de plusieurs à plusieurs, quel est le code SQL pour identifier les groupes inutilisés?
(si vous voulez que les noms concrets sur le terrain :) One-To-Many:
Table 'users': | user_id | group_id |
Table 'groups': | group_id |
Many-to-Many:
Table 'users': | user_id |
Table 'groups': | group_id |
Table 'user-group': | user_id | group_id |
Merci pour les deux réponses, ils fonctionnent tous les deux. Je suis curieux de savoir s'il y a une différence fonctionnelle entre les deux méthodes. – dimo414
@ dimo414 - au moins dans Sql Server (2005), le plan d'exécution de ma version est plus court et a un coût * légèrement inférieur. Vraiment, ce serait à celui que vous considérez plus lisible, sauf si vous utilisez des jeux de données massifs! =) – Rob
Cependant - après avoir exécuté les deux requêtes dans le même lot avec 65.536 lignes dans users_groups, ma requête arrive à 1% du coût du lot et une autre à 99% du lot - les deux sont toujours exécutées en moins d'un deuxième au total si – Rob