>Voglio eliminare da tab1 tutte le righe che hanno i campi data
>di nascita e cap presenti nella tab2
Non ti avevo chiesto il codice SQL?
Comunque...
USE tempdb;
CREATE TABLE dbo.tab1(
Nome varchar(10) NOT NULL,
Cognome varchar(10) NOT NULL,
DataDiNascita smalldatetime NOT NULL,
Cap char(5) NOT NULL,
Comune varchar(10) NOT NULL
);
CREATE TABLE dbo.tab2(
DataDiNascita smalldatetime NOT NULL,
Cap char(5) NOT NULL
);
INSERT dbo.tab1 VALUES ('Lorenzo', 'Benaglia', '19710612', '20059', 'Vimercate');
INSERT dbo.tab1 VALUES ('Andrea', 'Montanari', '19661105', '47838', 'Riccione');
INSERT dbo.tab1 VALUES ('David', 'De Giacomi', '19810122', '25047', 'Darfo');
INSERT dbo.tab2 VALUES ('19710612', '20059');
INSERT dbo.tab2 VALUES ('19810122', '25047');
/* Soluzione 1 */
DELETE dbo.tab1
FROM dbo.tab1 AS T1
JOIN dbo.tab2 AS T2
ON T1.DataDiNascita = T2.DataDiNascita
AND T1.Cap = T2.Cap;
/* Soluzione 2 */
DELETE dbo.tab1
FROM dbo.tab1 AS T1
WHERE EXISTS(
SELECT *
FROM dbo.tab2 AS T2
WHERE T1.DataDiNascita = T2.DataDiNascita
AND T1.Cap = T2.Cap
);
SELECT *
FROM dbo.tab1;
/* Output:
Nome Cognome DataDiNascita Cap Comune
---------- ---------- ----------------------- ----- ----------
Andrea Montanari 1966-11-05 00:00:00 47838 Riccione
(1 row(s) affected)
*/
DROP TABLE dbo.tab1, dbo.tab2;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org