【发布时间】:2014-07-29 00:29:48
【问题描述】:
我有两张桌子,staff 和 staff_data。 staff 是一个普通表,staff_data 是一个类型/值复合主键表(主键是 Staff_ID 和类型的组合) - 所以数据示例如下所示:
+----------+--------------------+----------+
| Staff_ID | Type | Value |
+----------+--------------------+----------+
| 1 | Department | IT |
| 1 | Organisation | BigCorp |
| 821 | Department | Finance |
| 1 | NetworkUsername | smith.j |
+----------+--------------------+----------+
我的目标是查询将选择所有员工及其部门,但如果他们没有在 staff_data 中列出的部门,它仍然会选择他们,但将部门列为空白。
以下查询仅包括在staff_data 中列出部门的员工
SELECT staff.name, staff_data.Value as Department
FROM staff JOIN staff_data USING(Staff_ID)
WHERE staff_data.Type = ‘Department’
GROUP BY staff.Name
但如果我不包含 WHERE 子句,显然我得不到我想要的数据。我如何编写一个查询来列出所有员工,包括他们的部门(如果存在)?
【问题讨论】:
标签: mysql join composite-primary-key