że dwie następujące tabele. Używam programu SQL Server 2008 R2lewa zewnętrzna przyłączyć t SQL
Create table #tmp1 (
a char(1)
)
Create table #tmp2 (
id int,
a char(1),
val int
)
insert #tmp1 values ('A')
insert #tmp1 values ('B')
insert #tmp1 values ('C')
insert #tmp2 values (1, 'A', 10)
insert #tmp2 values (1, 'B', 20)
insert #tmp2 values (2, 'A', 30)
insert #tmp2 values (2, 'C', 40)
select * from #tmp1 t1 left outer join #tmp2 t2 on t1.a = t2.a
order by t2.id
ta zwraca zestaw wyników
A 1 A 10
B 1 B 20
C 2 C 40
A 2 A 30
chciałbym mieć następujący wynik ustawić
A 1 A 10
B 1 B 20
C 1 null null
A 2 A 30
B 2 null null
C 2 C 40
Teraz jestem acheiving to poprzez stworzenie nowa tabela z krzyżem przyłączyć tak, a potem robi się sprzężenie zewnętrzne
select * into #tmp3 from #tmp1 cross join (select distinct ID from #tmp2) t
select * from #tmp3 t1 left outer join #tmp2 t2 on t1.a = t2.a and t1.id = t2.id
Czy istnieje lepszy sposób to zrobić?
Dzięki
+1 dla utworzenia SQL –
SQL konfiguracja jest miłe. Jednakże, należy unikać „*” S w zapytaniach, bo to zajmuje trochę rozszyfrowania, aby dowiedzieć się, które kolumny pochodzą które tabele. –