【发布时间】:2015-06-04 21:29:16
【问题描述】:
我想将员工推荐给他们的经理。
我这里有两个例子。他们都给了我一个我不想要的解决方案。
第一个自连接查询:
select m1.naam as medewerker, m2.naam as manager
from medewerkers m1, medewerkers m2
where m1.medewerker_id = m2.manager
order by 1;
解决方案截图:
现在我只得到所有经理而不是员工
第二次自连接查询:
select b.naam as employee, a.naam as manager
from medewerkers a right outer join medewerkers b on(a.medewerker_id = b.manager);
解决方案截图:
这将导致与上述相同的额外员工。问题是员工没有提到他们的经理(经理仍然提到他们自己)。
目前这是我插入数据库的内容。也许我的插入值可能有问题。因为给定的遮阳篷无法工作
--员工
insert into MEDEWERKERS (medewerker_id, naam, adres, telefoon_nummer, salaris, functie, werknemer_winkel_nummer, manager)
values(11111112, 'Joost', 'Eindhoven Langloopstraat 1', 0678765478, 1500, 'baliemedewerker', 10, null);
insert into MEDEWERKERS (medewerker_id, naam, adres, telefoon_nummer, salaris, functie, werknemer_winkel_nummer, manager)
values(11111119, 'Rick','Gemert. Dunneweg 76', 0678768315, 2200, 'Manager', 10, 11111119);
【问题讨论】:
-
您应该编辑您的查询并显示 (1) 您确实想要的结果和 (2) 进入查询的样本数据。
-
是的,您的插入错误。
manager应该是第一条记录上的11111119和第二条记录上的null。 -
经理应该是最后一个数字,而不是空值。我希望我说得通。现在我看到我正在向自己推荐一位经理,但我还能如何解决这个问题?我在这方面有点菜鸟:|
标签: sql join oracle11g self-join