我想知道是否有人可以帮助提高我对SQL中JOIN的理解.[如果它对问题很重要,我正在考虑MS SQL Server.]
取3个表A,B [A由某些A.AId相关]和C [B与某些B.BId相关的C]
如果我撰写查询,例如
SELECT *
FROM A JOIN B
ON A.AId = B.AId
Run Code Online (Sandbox Code Playgroud)
一切都很好 - 我对它的运作方式很满意.
当表C(或其他一些D,E,......被添加)时会发生什么
在这种情况下
SELECT *
FROM A JOIN B
ON A.AId = B.AId
JOIN C ON C.BId = B.BId
Run Code Online (Sandbox Code Playgroud)
什么是C加入? - 是B表(以及B表中的值吗?)或者是C表加入的A + B Join的结果是否是其他临时结果集?
[暗示并非B表中的所有值都必须在基于A,B的连接条件的临时结果集A + B中]
我要问的一个具体(并且相当人为)的例子是因为我试图理解我在下面看到的行为:
Tables
Account (AccountId, AccountBalanceDate, OpeningBalanceId, ClosingBalanceId)
Balance (BalanceId)
BalanceToken (BalanceId, TokenAmount)
Where:
Account->Opening, and Closing Balances are NULLABLE
(may have opening balance, closing balance, or none)
Balance->BalanceToken is 1:m - a balance …Run Code Online (Sandbox Code Playgroud)