【发布时间】:2013-11-25 13:25:55
【问题描述】:
我一直在尝试委托查询来获取 3 个表的列,但我不断得到不匹配的行。
这些是我的桌子:
消息
- 消息ID
- 发件人(可以是客户 ID 或员工 ID)
- 接收者(可以是 customerID 或employeeID)
(注意:对于每条消息,它将仅包含 1 位客户和 1 位员工,即客户之间不互动,员工之间也不会互相发消息)
客户
- 客户 ID
员工
- 员工ID
- 部门ID
部门
- 部门ID
- 部门名称
对于 customerID = 5 的特定客户,我想弄清楚他们正在与之交谈的员工的 DepartmentName 是什么。
我最初的尝试是:
SELECT * FROM Messages,Employee, Departmnet,
WHERE sender = '5' OR receiver = '5'
AND (Employee.employeeID = Messages.sender OR Employee.employeeID = Messages.Receiver)
AND Employee.departmentID = Department.DepartmentID;
但是,这会返回比预期更多的行。我认为这是因为发送者或接收者可能是员工 ID。
我的第二个猜测是也许我必须加入表格,但我在这方面没有太多经验。如果有人可以告诉我或告诉我如何执行此查询,我将不胜感激。
【问题讨论】:
-
发布一些样本数据和想要的结果。
-
customerId 和employeeId 只是自动递增的ID,或者您确定客户和员工不能拥有相同的ID?
-
@rakeshjain 它们不是自动递增值,消息的创建方式确保客户只会向员工发送消息,而员工只会向客户发送消息。
标签: mysql sql join where-clause