Ho due tabelle che voglio unire insieme usando un join esterno sinistro. Tuttavia, anche se la mia tabella di sinistra contiene solo valori univoci, la tabella di destra soddisfa la condizione più di una volta e, come tale, aggiunge ulteriori righe al gruppo di risultati.LEFT OUTER JOIN (dà righe aggiuntive) problema
Codice di replicare problema:
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
Come si può vedere le prime dichiarazioni selezionare 4 righe, in cui la seconda selezionate 6, anche se la tabella di sinistra rimane invariato.
Come si rimane rigorosi sul tavolo sinistro e si utilizza solo la tabella di destra per COMPLEMENTARE le righe dal tavolo sinistro?
AIUTO!
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
Ho una tabella con più righe non distinte (log di login) la mia tabella di sinistra è questa tabella raggruppata per ID utente, quindi è distinta. la tabella di destra è la tabella originale, che contiene i dati di cui ho bisogno. Quindi collego la tabella di destra alla tabella di sinistra usando USERid, in modo che possa restituire i dati utili –