Warum werden immer Duplikate mit T-SQL FULL OUTER JOIN mit mehr als 2 Tabellen erstellt, wenn die erste Tabelle (die FROM-Tabelle) keinen Schlüsselwert hat, den mindestens zwei andere Tabellen haben?Warum werden Duplikate mit vollständigem Outer Join mit mehr als 3 Tabellen erstellt?
create table x(a int)
create table y(a int)
create table z(a int)
INSERT INTO x values (0);
INSERT INTO y values (1);
INSERT INTO z values (1);
SELECT x_a=x.a, y_a=y.a, z_a=z.a, a=coalesce(x.a,y.a,z.a)
FROM x as x
FULL JOIN y as y
ON y.a=x.a
FULL JOIN z as z
ON z.a=x.a
ORDER BY a
yeilds:
x_a y_a z_a a
0 NULL NULL 0
NULL 1 NULL 1
NULL NULL 1 1
Damit haben wir doppelte Schlüsselwerte, die nicht das, was ich erwarte, oder das, was Sie erhalten würden, wenn Sie die Tabellen verknüpft nacheinander oder um zwei Jahre. In diesem Fall ist FULL JOIN nicht wirklich assoziativ oder kommunikativ.
Gibt es eine Möglichkeit, dies auf eine programmatisch effiziente Weise zu lösen?
Ich verstehe Ihre Frage nicht:/ –
Also was ist Ihr erwartetes Ergebnis? – Squirrel