LEFT OUTER JOIN (gibt zusätzliche Zeilen) Problem
Ich habe zwei Tabellen, die ich mit einem Left Outer Join zusammenfügen möchte. Obwohl meine linke Tabelle nur eindeutige Werte enthält, erfüllt die rechte Tabelle die Bedingung mehr als einmal und fügt dem Resultset daher zusätzliche Zeilen hinzu.
Code zum Replizieren des Problems:
declare @tb1 table (c1 int) declare @tb2 table (c2 int) INSERT INTO @tb1 VALUES (1) INSERT INTO @tb1 VALUES (2) INSERT INTO @tb1 VALUES (3) INSERT INTO @tb1 VALUES (4) INSERT INTO @tb2 VALUES (3) INSERT INTO @tb2 VALUES (4) INSERT INTO @tb2 VALUES (5) INSERT INTO @tb2 VALUES (6) select * from @tb1 left outer join @tb2 ON c1 = c2 INSERT INTO @tb2 VALUES (3) INSERT INTO @tb2 VALUES (4) INSERT INTO @tb2 VALUES (5) INSERT INTO @tb2 VALUES (6) select * from @tb1 left outer join @tb2 ON c1 = c2
Wie Sie sehen, gibt das erste SELECT 4 Zeilen zurück, das zweite SELECT 6, obwohl die linke Tabelle unverändert bleibt.
Wie bleibt man strikt bei der linken Tabelle und verwendet nur die rechte Tabelle, um die Zeilen aus der linken Tabelle zu ERGÄNZEN?
HILFE!
RESULTS: c1 c2 ----------- ----------- 1 NULL 2 NULL 3 3 4 4 [DUPLICATE @tb2 records] c1 c2 ----------- ----------- 1 NULL 2 NULL 3 3 3 3 4 4 4 4