多个子查询

时间:2012-08-10 09:27:52

标签: php mysql subquery

我有3个表:Table1,Table2,Table3

我想创建一个查询,使用Table1的结果作为Table2的约束,Table2的结果作为Table3的约束

所以现在我的查询是这样的:

SELECT tb3.id 
FROM tb3 
WHERE tb3.tag = (
                   SELECT tb2.num 
                   FROM tb2 
                   WHERE tb2.name = (
                                      SELECT tb1.user 
                                      FROM tb1 
                                      WHERE check = '0'
                                    )
                 )

例如,

tb1有项目'tb1.check','tb1.user';

tb2有项目'tb2.num','tb2.name';

tb3有项目'tb3.tag','tb3.id';

首先检查tb1以获取'tb1.check'= 0的数据,然后获取'tb1.user',

然后检查tb2以获取'tb2.name'='tb1.user'并获取'tb2.num'的数据,

所以,检查tb3以获取'tb3.tag'='tb2.num'的数据,然后获取'tb3.id'

但我得到的只是空的,有什么帮助吗?

3 个答案:

答案 0 :(得分:3)

使用INNER JOIN而不是子查询:

SELECT tb3.id 
FROM tb3 
     INNER JOIN tb2  
         ON tb3.tag = tb2.num
     INNER JOIN Invitation inv
         ON tb2.name = inv.user AND
            inv.check = 0;

答案 1 :(得分:2)

实际上你可以使用JOIN

来做到这一点
SELECT tb3.id 
FROM   tb3 
        INNER JOIN tb2  
            ON tb3.tag = tb2.num
        INNER JOIN Invitation inv
            ON tb2.name = inv.user
WHERE   inv.check = 0

答案 2 :(得分:1)

试试这个......

SELECT tb3.id 
FROM tb3,tab2,tab1 
WHERE tb3.tag = tb2.num and 
tb2.name = tb1.user and 
tb1.check = '0'