SQl查询在不同条件下的同一个表中的多个选择状态

时间:2015-06-05 03:03:10

标签: mysql sql

所以我有3个表,我想要执行一些查询,但在这个过程中我最终返回到一个表,我已经执行了一些函数和它。

我首先从一个依赖表中获取essn并在employee表中搜索匹配它的ssn然后我得到了superssn并与另一个表中的mgrssn进行比较。最后一步是返回employee表并找到具有相同ssn mgrssn的人的姓名。

这里的问题是,一旦我得到匹配的超级用户,我就无法访问其他行。

select lname, fname from
(select mgrssn from department) as d,
(select superssn, lname,fname,ssn from
    (select essn from dependent where dependent_name ='joy') as de,
    (select ssn,lname,fname,superssn from employee) as e
where essn =ssn) as s
where s.ssn = mgrssn

我应该考虑做联接吗?

1 个答案:

答案 0 :(得分:1)

您不需要子查询。您的查询有点难以理解(您没有所有列的表别名),但我认为这是您要做的事情:

select lname, fname
from department d join
     employee e
     on e.ssn = d.mgrssn join
     dependent dep
     on dep.essn = e.ssn
where dep.dependent_name ='joy';

简单规则:永远不要在from子句中使用逗号。始终使用明确的join语法。