Co jest nie tak z tym prostym łączeniem zewnętrznym SQL?W jaki sposób A lewe sprzężenie zewnętrzne B może zwrócić więcej wierszy niż w A?
select count(*) from A -- 25766
select count(*) from B -- 1242
select count(*) from A left outer join B on A.b = B.b -- 310176
zwraca odpowiednio 25766, 1242 i 310176 wierszy. (To jest dla Microsoft SQL Server 2012.) W jaki sposób A left outer join B
może kiedykolwiek zwrócić więcej wierszy niż istnieje w A
, szczególnie biorąc pod uwagę diagram Venna this? Chyba popełniam głupi błąd, ale co to jest?
Może być tak, że kolumny b nie jest całym kluczem? – Jens
+1 Sprawdzę. Jak to wyjaśnić 310176? – Drux
Jeśli b jest tylko częścią klucza, może to być jedna linia w odwołaniu A o wiele więcej linii w B i jeśli w twoim przykładzie 1 rekord A odniesienia 12,0 ... wiersze w B otrzymasz swój wynik. – Jens