我有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'
但我得到的只是空的,有什么帮助吗?
答案 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'