嵌套的sql缺少右括号,但在哪里?

时间:2015-09-15 12:13:20

标签: sql oracle maximo

我正在尝试创建一个嵌套的sql,以便向我显示来自ID的所有table1同样位于table2,但问题是如果来自table1 istask = 1得到了标记parentid我希望它选择ID而不是ID

可以有多个parentid具有相同的 SELECT * from table1 WHERE id in(SELECT refid from table2 WHERE table1.istask = 0 OR (SELECT DISTINCT table1.parentid from table1 WHERE id in(select refid from table2 WHERE table1.istask = 1)))

我知道这只是通过连接完成的,但在IBM Maximo的Web界面中,您不能在查询中创建连接,我们无法创建可在Maximo的Web界面中访问的视图

我已经使用以下查询进行了测试,但我只会得到缺少的右括号错误。

如果我尝试将查询作为自己的查询,他们就可以工作。

测试1

SELECT * from table1
    WHERE id in((SELECT refid from table2 WHERE table1.istask = 0 )
                OR (SELECT DISTINCT table1.parentid from table1 WHERE
                    id in(select refid from table2 WHERE table1.istask = 1))))

测试2

osgi.ds

1 个答案:

答案 0 :(得分:1)

我猜你正试图这样做:

SELECT * from table1
    WHERE id IN (SELECT refid from table2 WHERE table1.istask = 0)
    OR id IN (SELECT DISTINCT table1.parentid from table1 
        WHERE id IN (select refid from table2 WHERE table1.istask = 1))

在where子句的第二部分中,您需要重复'id IN'。