Group: microsoft.public.it.sql




Subject: record senza corrispondenza
From: Lorenzo Benaglia
Date: 5/11/2007 2:41:10 PM
piocanet wrote: > Per un progetto devo recuperare tutte le righe di una tabella padre > (clienti) che non hanno corrispondenza nella tabella figlio (fatture) > Mi aiutate? Ciao piocanet, Puoi procedere in diversi modi: USE tempdb; /* Creo la tabella dbo.Students1 */ CREATE TABLE dbo.Students1( StudentID int NOT NULL PRIMARY KEY, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL, Age tinyint NOT NULL ); /* Creo la tabella dbo.Students2 */ CREATE TABLE dbo.Students2( StudentID int NOT NULL PRIMARY KEY, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL, Age tinyint NOT NULL ); /* Le popolo */ INSERT dbo.Students1 VALUES(1, 'Lorenzo', 'Benaglia', 31); INSERT dbo.Students1 VALUES(2, 'Luca', 'Bianchi', 30); INSERT dbo.Students1 VALUES(3, 'Gianluca', 'Hotz', 31); INSERT dbo.Students2 VALUES(1, 'Lorenzo', 'Benaglia', 31); INSERT dbo.Students2 VALUES(2, 'Luca', 'Bianchi', 30); INSERT dbo.Students2 VALUES(4, 'Andrea', 'Montanari', 25); /* Query: Restituisco gli studenti in dbo.Students1 ** che non sono presenti in dbo.Students2 */ /* Soluzione 1 */ SELECT S1.* FROM dbo.Students1 AS S1 LEFT JOIN dbo.Students2 AS S2 ON S1.StudentID = S2.StudentID WHERE S2.StudentID IS NULL; /* Soluzione 2 */ SELECT * FROM dbo.Students1 WHERE StudentID NOT IN( SELECT StudentID FROM dbo.Students2 ); /* Soluzione 3 */ SELECT * FROM dbo.Students1 S1 WHERE NOT EXISTS( SELECT * FROM dbo.Students2 S2 WHERE S1.StudentID = S2.StudentID ); /* Soluzione 4 (per SQL Server 2005) */ SELECT * FROM dbo.Students1 EXCEPT SELECT * FROM dbo.Students2; /* Output: StudentID FirstName LastName Age ----------- ---------- ---------- ---- 3 Gianluca Hotz 31 (1 row(s) affected) */ /* Pulizia */ DROP TABLE dbo.Students1, dbo.Students2; Per comprendere a fondo le differenze, approfondisci i singoli comandi sui Books Online. Ciao! -- Lorenzo Benaglia Microsoft MVP - SQL Server http://blogs.dotnethell.it/lorenzo http://italy.mvps.org