Confronto di colonne

giovedì 30 aprile 2009 - 08.53

lordwaizard Profilo | Senior Member

Ho due tabelle diverse con le medesime colonne.
Dovrei verificare i contenuti e capire cosa manca nella seconda tabella


SQL
USE [prova]
GO

/****** Object: Table [dbo].[T1] Script Date: 04/30/2009 08:46:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T1](
[nome] [nvarchar](50) NULL
) ON [PRIMARY]

GO

USE [prova]
GO

/****** Object: Table [dbo].[T2] Script Date: 04/30/2009 08:46:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T2](
[nome] [nvarchar](50) NULL
) ON [PRIMARY]

GO

INSERT INTO T1(nome) VALUES ('davide')
INSERT INTO T1(nome) VALUES ('paolo')
INSERT INTO T1(nome) VALUES ('matteo')
INSERT INTO T1(nome) VALUES ('andrea')

INSERT INTO T2(nome) VALUES ('paolo')
INSERT INTO T2(nome) VALUES ('matteo')
INSERT INTO T2(nome) VALUES ('andrea')




L'obbiettivo sarebbe quello di visualizzare la riga che contiene 'Davide'

lbenaglia Profilo | Guru

>Ho due tabelle diverse con le medesime colonne.
>Dovrei verificare i contenuti e capire cosa manca nella seconda
>tabella

Ciao Davide,

Puoi utilizzare una di queste tecniche:

USE tempdb; CREATE TABLE dbo.T1( nome nvarchar(50) NULL ); CREATE TABLE dbo.T2( nome nvarchar(50) NULL ); INSERT dbo.T1 VALUES ('davide'); INSERT dbo.T1 VALUES ('paolo'); INSERT dbo.T1 VALUES ('matteo'); INSERT dbo.T1 VALUES ('andrea'); INSERT dbo.T2 VALUES ('paolo'); INSERT dbo.T2 VALUES ('matteo'); INSERT dbo.T2 VALUES ('andrea'); /* Soluzione 1 */ SELECT T1.nome FROM dbo.T1 LEFT JOIN dbo.T2 ON T1.nome = T2.nome WHERE T2.nome IS NULL; /* Soluzione 2 */ SELECT nome FROM dbo.T1 WHERE NOT EXISTS( SELECT * FROM dbo.T2 WHERE nome = T1.nome ); /* Soluzione 3 */ SELECT nome FROM dbo.T1 WHERE nome NOT IN( SELECT nome FROM dbo.T2 ); /* Output: nome ------- davide (1 row(s) affected) */ DROP TABLE dbo.T1, dbo.T2;

Le prime due offrono un piano di esecuzione più efficiente rispetto alla terza.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5