日期:2014-05-16  浏览次数:20583 次

SQL 多表查询,用一条查询语句
表a 
    a.id , a.bid ,a.name 
      1      1       a1        
      2      2       a2
      3      3       a3

根据条件a.name = a1 获取 对应a.id=1

表b
    b.id , b.aid ,b.name 
      1       1       b1
      2       1       b2
      3       3       b3

根据条件b.aid =1 获取 对应b.id=1,2

表c
    c.id , c.bid ,c.name 
      1       1       c1
      2       2       c2
      3       3       c3   

根据条件 c.bid =1,2 获取 对应c.id=1,2

表d
    d.id , d.cid ,d.name 
      1       1       d1
      2       2       d2
      3       3       d3  

根据条件 d.cid =1,2 获取 对应d.id=1,2

要想得到新表:

    d.id , d.cid ,d.name , a.name , b.name, c.name  
      1       1       d1       a1       b1      c1
      2       2       d2       a1       b2      c1

用一条查询语句能得到吗?怎么写?
------解决方案--------------------
select
   d.id,d.cid,d.name , a.name , b.name, c.name  
from 
   d 
inner join c on d.cid=c.id
inner join b on c.bid=b.id
inner join a on b.aid=a.id

------解决方案--------------------
试试这个:
select    d.id,d.cid,d.name , a.name , b.name, c.name  
from a 
inner join b on b.id=a.bid
inner join c on b.id=c.bid
inner join d on c.id=d.cid
where a.name = 'a1'