【问题标题】:SQl query Multiple select statments in the same table under different conditionsSQl查询不同条件下同一张表中的多个select语句
【发布时间】:2015-06-05 03:03:09
【问题描述】:

所以我有 3 个表,我想对其执行一些查询,但在此过程中,我最终返回到一个我已经对其执行了一些功能的表。

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

这里的问题是,一旦我获得匹配的 superssn,我就无法访问其他行。

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

我应该考虑做连接吗?

【问题讨论】:

    标签: mysql sql


    【解决方案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 语法。

    【讨论】:

    • 我不得不 d.essn = e.ssn 到 dep.essn = e.ssn 但它给了我和以前一样的结果。
    • @SamKohnson 。 . .进行该更改后,逻辑应该与您问题中的查询相同。
    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2018-06-28
    • 2018-08-30
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    相关资源
    最近更新 更多