2014-01-09 32 views
0

在回答之前,请仔细查看查询。卡住查询。即使不知道应该叫什么......它是一个相关的子查询吗?

我在子查询中从外部查询访问列时出现错误。 在C1.C_ID = a.C_ID

SELECT 
     COL_ANY, 
     COL_ANY1, 
     COL_ANY2 

FROM A a 
INNER JOIN B b ON a.B_ID = b.B_ID 
WHERE 
a.C_ID = (SELECT c.C_ID FROM C c 
    INNER JOIN C C1 ON C1.C_ID = a.C_ID) 
+1

我觉得更换后一切WHERE与a.C_ID不为空没有对结果产生影响。 – wxyz

+0

错误是什么? – StevieG

+0

无效标识符a.C_ID。子查询无法从外部查询访问列a.C_ID。 – YOusaFZai

回答

0

假设我理解你想要做什么(这将是有益的,如果你在你的问题中详细说明这一点) - 你想获得的所有行从A与C_ID存在于C

在这种情况下,你可以这样做:

SELECT 
    COL_ANY, 
    COL_ANY1, 
    COL_ANY2 
FROM A a 
INNER JOIN B b ON a.B_ID = b.B_ID 
WHERE 
a.C_ID IN (SELECT c.C_ID FROM C) 

或可能是更好的,刚刚加入到C还有:

SELECT 
    COL_ANY, 
    COL_ANY1, 
    COL_ANY2 
FROM A a 
INNER JOIN B b ON a.B_ID = b.B_ID 
INNER JOIN C b ON a.C_ID = C.C_ID 
+0

但我也想从C获得所有C_ID C_ID = a .C_ID。查看内部查询。 – YOusaFZai

+0

我的两个例子都能给你。 – StevieG