我正在尋找加入兩個表,條件是如果用戶表中有分支代碼字段中的任何內容,那麼SQL查詢將只返回其分支代碼。SQL加入表查找條件
但是,如果用戶表在分支代碼框中有NULL,它將返回分支表中的所有分支代碼。
下面是我正在嘗試,我知道不工作,但應該給我一些傾向的表和字段我正在使用。
SELECT IF(u.BranchCode IS NOT NULL THEN b.BranchCode ELSE u.BranchCode END) AS BranchCode, b.BranchName, b.BranchAddress1, b.BranchAddress2
FROM users AS u
LEFT JOIN branches AS b ON u.BranchCode = b.BranchCode
WHERE u.Username = '$_SESSION[USERNAME]'
一些表的例子:
用戶
UserName | BranchCode
---------|------------------
bob | NULL
sam | AW3456
dave | NULL
alison | NULL
fred | NULL
分行
BranchCode| BranchName |BranchAddress1 |BranchAddress2
----------|-------------|---------------|-------------------
AQ3459 | Northmore |1 Northmore Rd |Northmore Village
AW3456 | Middleton |28 Main Rd |Middleton Stoney
DE5689 | Western |451 Station Rd |Western
FR3278 | Easterly |12 Acacia Dr |Easterly Estate
因此,例如,如果Bob是用戶身份登錄,將返回所有的BranchCode信息的:
BranchCode| BranchName |BranchAddress1 |BranchAddress2
----------|-------------|---------------|-------------------
AQ3459 | Northmore |1 Northmore Rd |Northmore Village
AW3456 | Middleton |28 Main Rd |Middleton Stoney
DE5689 | Western |451 Station Rd |Western
FR3278 | Easterly |12 Acacia Dr |Easterly Estate
如果SAM是用戶身份登錄,因爲它在用戶表的規定,將返回他的BranchCode信息只查找:
BranchCode| BranchName |BranchAddress1 |BranchAddress2
----------|-------------|---------------|-------------------
AW3456 | Middleton |28 Main Rd |Middleton Stoney
你的意思是說,你想要所有的數據從分支表中不與用戶錶鏈接? – 2014-09-04 07:27:11
如果我說我不是你的SQL混淆的話,我會說謊。有什麼方法可以給我們一個快速的列表解釋和一些虛擬數據? – Jhecht 2014-09-04 07:32:28
@Jhecht - 我重新閱讀後刪除了我的評論,這是'LEFT JOIN'/slaps_forehead – 2014-09-04 07:42:57