Använda två tabeller i from
klausul är funktionellt likvärdig med en cross join
:
select *
from A
cross join
B
Detta returnerar en rad med A för varje rad i B. När B är tom är resultatet också tomt. Du kan fixa det genom att använda en left join
. Med en left join
, kan du returnera rader även om en av tabellerna är tom. Till exempel:
select *
from A
left join
B
on 1=1
Som villkoret 1=1
är alltid sant, detta är precis som en cross join
förutom att det också fungerar för tomma tabeller.