将多个 oracle 连接转换为多个 ANSI 连接
Converting multiple oracle join to multiple ANSI join
使用此工具:http://107.170.101.241:8080/joinConverter/
我看到一个简单的 Oracle 联接是从以下内容转换而来的:
SELECT *
FROM Table1 t1,
Table2 t2
WHERE t1.id = t2.id
加入 ANSI:
SELECT *
FROM Table1 t1
inner join Table2 t2 on t1.id = t2.id
但是,对于像这样的更复杂的查询,它会出错:
SELECT *
FROM Table1 t1,
Table2 t2,
Table3 t3
WHERE t2.id = t3.id
AND t1.account_id = 5
AND t2.coord in (t1.w, t1.x, t1.y, t1.z)
AND t3.num IS NOT NULL
我收到错误:
Error 1, Message: This table has no join condition: Table2
Error 2, Message: This table has no join condition: Table3
我该如何解决这个问题?什么是合适的 ANSI 语法?
语法是:
SELECT *
FROM Table1 t1 JOIN
Table2 t2
ON t2.coord IN (t1.w, t1.x, t1.y, t1.z) JOIN
Table3 t3
ON t2.id = t3.id
WHERE t1.account_id = 5
t3.num IS NOT NULL
使用此工具:http://107.170.101.241:8080/joinConverter/
我看到一个简单的 Oracle 联接是从以下内容转换而来的:
SELECT *
FROM Table1 t1,
Table2 t2
WHERE t1.id = t2.id
加入 ANSI:
SELECT *
FROM Table1 t1
inner join Table2 t2 on t1.id = t2.id
但是,对于像这样的更复杂的查询,它会出错:
SELECT *
FROM Table1 t1,
Table2 t2,
Table3 t3
WHERE t2.id = t3.id
AND t1.account_id = 5
AND t2.coord in (t1.w, t1.x, t1.y, t1.z)
AND t3.num IS NOT NULL
我收到错误:
Error 1, Message: This table has no join condition: Table2
Error 2, Message: This table has no join condition: Table3
我该如何解决这个问题?什么是合适的 ANSI 语法?
语法是:
SELECT *
FROM Table1 t1 JOIN
Table2 t2
ON t2.coord IN (t1.w, t1.x, t1.y, t1.z) JOIN
Table3 t3
ON t2.id = t3.id
WHERE t1.account_id = 5
t3.num IS NOT NULL