MySQL:自然加入两次

时间:2013-11-17 15:53:44

标签: mysql join

我有一张桌子,我想两次加入。让我解释一下:

Mitarbeiter包含以下属性:id, name, vorname, chefid。现在我必须创建一个SELECT语句,在其中显示工人的老板和那些老板的老板。 我知道这听起来很混乱,但你知道学校里的运动是怎样的......

到目前为止,我已经完成了这个陈述,但似乎没有成功:

select * from Mitarbeiter m inner join Mitarbeiter c on m.chefId = c.id 
inner join Mitarbeiter cc on p.chefId = cc.id;

还有一点注意事项:这次演习是德国人。 Mitarbeiter表示employee,而Chef是“Boss”的德语术语。

对于那些能说/懂德语的人来说,这是我得到的问题:

Die Mitarbeiter einer Firma sind in drei Hierarchiestufen organisiert, 
d.h. ein Mitarbeiter kann einen Chef haben und dieser wiederum einen Chef. 
Dies ist über die Tabelle Mitarbeiter abgebildet, wobei ChefId auf den Id 
des Chefs zeigt.
=> Wie müsste ein „Selfjoin“ aussehen, der die Mitarbeiter Namen, 
   die ChefNamen und die ChefChefNamen ausgibt?

我很抱歉我的英语不好,但StackOverflow似乎是我提出问题的唯一资源。

2 个答案:

答案 0 :(得分:1)

因此,您的语句中有一个实际错误,您将第二个连接表别名为c,但在第三个连接的p子句中将其称为ON。它应该是:

SELECT * 
FROM   Mitarbeiter m 
            INNER JOIN Mitarbeiter c ON m.chefId = c.id 
            INNER JOIN Mitarbeiter cc ON c.chefId = cc.id;

此外,您正在使用内部联接,这将消除那些没有2级以上厨师的人(例如CEO!)所以您可能希望改为LEFT JOIN。

答案 1 :(得分:0)

SELECT name a, c.name, cc.name FROM MitArbeiter a, MittArbeiter c, MittArbeiter cc
WHERE a.chefid = c.id AND c.chefid = cc.id