Prendi ad esempio un'applicazione che ha utenti, ognuno dei quali può trovarsi esattamente in un gruppo. Se vogliamo SELEZIONARE l'elenco di gruppi che non hanno membri, quale sarebbe l'SQL corretto? Continuo a sentirmi come se stessi per cogliere la domanda, e poi scompare di nuovo.Seleziona tutti gli elementi in una tabella che non appaiono in una chiave esterna di un'altra tabella
Punti bonus - dato il senario alternativo, dove è un accoppiamento molti a molti, qual è l'SQL per identificare i gruppi inutilizzati?
(se si desidera che i nomi dei campi in cemento :) uno-a-molti:
Table 'users': | user_id | group_id |
Table 'groups': | group_id |
molti-a-molti:
Table 'users': | user_id |
Table 'groups': | group_id |
Table 'user-group': | user_id | group_id |
Grazie per entrambe le risposte, entrambi funzionano. Sono curioso di sapere se c'è qualche differenza funzionale tra i due metodi. – dimo414
@ dimo414 - almeno in Sql Server (2005), il piano di esecuzione per la mia versione è più breve e ha un costo * marginalmente * inferiore. In realtà, sarebbe da considerarsi più leggibile, a meno che non si stiano utilizzando enormi set di dati! =) – Rob
Tuttavia, avendo appena eseguito entrambe le query nello stesso batch con 65.536 righe in users_groups, la mia query arriva all'1% del costo in lotti e un'altra a 99% del batch, entrambi eseguiti in meno di un secondo in totale però – Rob