【发布时间】:2013-04-18 01:49:59
【问题描述】:
我有 3 张桌子
人员:id、姓名
部门:id、姓名
Match_Dept_Per:dept_id、pers_id、workInfo
外键:
dept_id --> Department.id
pers_id --> Personel.id
示例数据:
人员:
1、埃米尔·西瓦斯
2、塞尔坎通凯
部门:
1、销售
2、规划
Match_Dept_Per:
1,1,经理
我想要做的是,列出人名、部门名称和工作信息,例如:
ID | Pers. Name | Dept Name | Work Info
---------------------------------------
1 | Emir Civas | Sales | Manager
我可以通过一个简单的选择查询来做到这一点:
select p.id, p.name, d.name, m.workInfo
from personel p, department d, match_dept_per m
where p.id = m.pers_id and d.id = m.dept_id;
这是我的架构和此查询的sample fiddle。
但是,我需要显示其他人的 ID 未插入到 match_dept_per 表中。并将“未知”设置为空值。喜欢:
ID | Pers. Name | Dept Name | Work Info
------------------------------------------
1 | Emir Civas | Sales | Manager
2 | Sercan Tuncay | Unknown | Unknown
由于我使用的是 Match_Dept_Per 表,如果不添加 Personel ID,我将无能为力。
有什么建议吗?
【问题讨论】:
-
我相信您需要将 ISNULL() 函数合并为 SQL 语句的一部分。 ISNULL ( check_expression , replacement_value ) 所以这将允许您用 UNKNOWN 替换检查为 null 的值。我不会发布答案,因为我没有时间重写您的查询。
标签: sql sql-server sql-server-2008 select join