-1

我有 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 的数据 where 'tb1.check'= 0 ,然后获取它的 'tb1.user',

然后检查 tb2 的数据 where 'tb2.name' = 'tb1.user' 并得到 'tb2.num',

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

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

4

3 回答 3

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;
于 2012-08-10T09:30:02.070 回答
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
于 2012-08-10T09:32:34.670 回答
1

试试这个...

SELECT tb3.id 
FROM tb3,tab2,tab1 
WHERE tb3.tag = tb2.num and 
tb2.name = tb1.user and 
tb1.check = '0'
于 2012-08-10T09:35:54.397 回答