2015-04-06 121 views
0

所以我有2个表;一个任务表和一个员工表。MySQL 2外键到相同的主键

任务由员工创建并维护将其创建为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; 

我试图改变,但是它要么返回错误或碰到内存限制。

我哪里错了?

+0

你得到什么错误?你能用导致错误的小样本数据集来更新问题吗? – jpw

回答

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