MySQL 2的外键是同一个主键

时间:2015-04-06 14:56:05

标签: mysql

所以我有两张桌子;任务表和员工表。

任务由员工创建,并维护将其创建为creator_id的员工的ID。

将一项任务分配给员工,并将其分配给的员工的ID维护为responsible_id。

任务的创建者及其分配的员工可以是不同的人。

如何编写一个select语句,允许我显示创建任务的员工和分配给该员工的员工的全名。

我认为可能看起来像这样:

SELECT Task.Description, Employee1.name, Employee2.name
FROM Task, Employee Employee1, Employee Employee2
WHERE Task.creator_id = Employee1.id
AND Task.responsible_id = Employee2.id;

我尝试过这种变体,但它会返回错误或达到内存限制。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

根据您的描述,查询是正确的,但您应该考虑重写它以使用显式ANSI连接:

SELECT Task.Description, Employee1.name, Employee2.name
FROM Task
JOIN Employee Employee1 ON Task.creator_id = Employee1.id
JOIN Employee Employee2 ON Task.responsible_id = Employee2.id;

Sample SQL Fiddle