我正在寻找加入两个表,条件是如果用户表中有分支代码字段中的任何内容,那么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