选择查询如何工作?

时间:2014-03-02 06:09:04

标签: sql select database

我遇到此查询的问题 它正在执行退出但我无法理解 这个select语句是如何工作的。 任何有关此问题的帮助或解释将不胜感激.. 谢谢 这些是我的表和查询 我在这里寻找与他们工作的公司住在同一个城市的员工

表:-emp

eid         name             street        city
----------- ---------------- ------------- ------------
1           yeman            asd           vasai
2           aksh             adssd         mumbai
3           chintan          ghfgh         mumbai
4           samual           ghfdgh        bandra
5           ddlj             fghfgh        andheri
6           jack             fghnfg        Bandra
7           bridge           gfhfgh        vasai
8           rahim            ghfgh         mumbai
9           chirag           fghfghfg      bandra
10          mistry           hhhty         bandra
11          ravi             tytey         andheri

表: - 公司

cid         companyname            city
----------- -------------------    ------------
1           Vasai Industries       vasai
2           Mumbai Pharmacy        mumbai
3           bandra loft            bandra
4           andheri tactics        andheri

表:=工作

eid         cid         salary
----------- ----------- -----------
1           1           200
2           3           4831
3           4           4457
4           2           20001
5           1           32221
6           2           224
7           3           784
8           1           336
9           3           2489
10          2           4789
11          1           22541

查询

  select * from emp
    where eid 
    IN (select eid from works 
         where cid=(select cid from company 
                    where city=emp.city))

2 个答案:

答案 0 :(得分:3)

为什么不将此查询与连接一起使用,然后很容易理解一堆子查询。

 select * from emp
 inner join works    on works.eid = emp.eid
 inner join company  on company.city=emp.city

答案 1 :(得分:1)

<强>解释

1。select cid from company where city=emp.city

在这里,您将获得有关在emp和公司中相同的城市的城市ID

2

select eid from works 
     where cid=(select cid from company 
                where city=emp.city)

在这里你从工作表中获取id的集合,cid在emp和公司中是相同的

3

select * from emp
where eid 
IN (select eid from works 
     where cid=(select cid from company 
                where city=emp.city))

在这里,您将获得所有基于emp id的记录,其城市在emp和city中相同