如何从两个不同的表中获取查询作为单个表

时间:2011-10-05 07:05:00

标签: sql

我有两张桌子

Tab1        
id  Name    Level
1   a1  1
2   a2  1
3   b1  2
4   b2  2
5   c1  3
6   c2  3
7   b3  2
8   c3  3
9   c4  3


Tab2        
id  linkid  
1   3   
3   6   
1   7   
7   8   
3   9

我正在尝试获取级别= 1的不同级别的id

之类的东西
Tab3        
Level1  Level2  Level3
1   3   6
1   7   8
1   3   9

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

以下声明对您提供的数据已足够......

SQL语句

SELECT  lvl1.id AS Level1
        , lvl2.id AS Level2
        , lvl3.id AS Level3
FROM    Tab2 lvl1
        INNER JOIN Tab2 lvl2 ON lvl2.id = lvl1.linkid
        INNER JOIN Tab2 lvl3 ON lvl3.id = lvl2.linkid
WHERE   lvl1.id = 1

...但我认为你在某种程度上需要Tab1纳入结果,所以这可能更接近你真正需要的

SQL语句

SELECT  lvl1.id AS Level1
        , lvl2.id AS Level2
        , lvl3.id AS Level3
FROM    Tab1 t1 
        INNER JOIN Tab2 lvl1 ON lvl1.id = t1.id
        INNER JOIN Tab2 lvl2 ON lvl2.id = lvl1.linkid
        INNER JOIN Tab2 lvl3 ON lvl3.id = lvl2.linkid
WHERE   t1.id = 1

请注意,我认为Tab2.idTab1.id的外键