Ho la necessità di evidenziare i campi differenti tra N tabelle rispetto ad 1 tabella "MASTER"
Finche si tratta del confrondo tra 2 tabelle tutto ok, ci sono diversi modi più o meno buoni
SELECT MIN(TableName) as TableName, ID, Testo1, test2
FROM
(
SELECT 'Tabella 1' as TableName, ID, Testo1, test2
FROM [Esercizi].[dbo].[Table_1]
UNION ALL
SELECT 'Tabella 2' as TableName, ID, Testo1, test2
FROM [Esercizi].[dbo].[Table_2]
) tmp
GROUP BY ID, Testo1, Test2
HAVING COUNT(*) = 1
ORDER BY ID, Tablename
Oppure
SELECT [Esercizi].[dbo].[Table_1].Testo1 AS T1_Testo, [Esercizi].[dbo].[Table_2].Testo1 AS T2_Testo, [Esercizi].[dbo].[Table_3].Testo1 AS T3_Testo
FROM [Esercizi].[dbo].[Table_1] INNER JOIN
[Esercizi].[dbo].[Table_3] ON Table_1.ID = Table_3.ID INNER JOIN
[Esercizi].[dbo].[Table_2] ON Table_1.ID = Table_2.ID
WHERE (Table_1.Testo1 <> Table_2.Testo1) OR
(Table_1.Testo1 <> Table_3.Testo1)
Considerando Table1 la master
Cosi a naso mi pare che la prima sia meno "pesante" della seconda (che confronta 2 tabelle con la prima) ma ad occhio non riesco a raffinarla per fare il controllo tra N tabelle e la "master".
Any tricks?