这是要求
我有两个表,如下所示,OrderList是一个数据表,其中包含3个字段存储StaffId,这是一个来自staff表的外键。注意到某些记录在此表中可能没有值。
OrderList
OrderId Marketing_Staff_ID Finance_Staff_Id ManagerId
1 STAFF001 STAFF002 STAFF003
2 STAFF005 STAFF003
3 STAFF004 STAFF004 STAFF003
4 STAFF001 STAFF002 STAFF003
5 STAFF001 STAFF007
员工
Staff_Id Staff_Name
STAFF001 Jack C.K.
STAFF002 William. C
STAFF005 Someone
我想写一个SQL语句也可以为每个记录表单OrderList选择人员名称,(对于没有员工ID的这些记录,在名称字段中留下N / A)
OrderId Mkt StaffID Name Finance StaffId Name ManagerId, Name
1 STAFF001 Jack C.K. STAFF002 William. STAFF003 Chan.Chi
那么如何编写SQL呢?左加入还是......
非常感谢,因为我真的是SQL的初学者。
答案 0 :(得分:5)
您需要多个LEFT JOIN
s:
select ol.orderid,
ol.marketing_staff_id,
coalesce(ms.staff_name, 'n/a') as marketing_name,
ol.finance_staff_id,
coalesce(fi.staff_name, 'n/a') as finance_name
from orderlist as ol
left join staff as ms on ms.staff_id = ol.marketing_staff_id
left join staff as fi on fi.staff_id = ol.finance_staff_id
我会留给你为经理添加联接。
以上是ANSI SQL,应该适用于每个DBMS。您的DBMS很可能不支持coalesce
函数,该函数只是用不同的值替换NULL
值。在这种情况下,您需要查看DBMS的手册。