ESP*_*ESP 17 sql db2 oracle-sqldeveloper
我有以下SQL:
select <misc things>
from pluspbillline
left outer join workorder
on workorder.siteid=pluspbillline.siteid
and workorder.wonum = pluspbillline.refwo
and workorder.orgid = pluspbillline.orgid
left outer join ticket
on ticket.ticketid = pluspbillline.ticketid
and ticket.class=pluspbillline.ticketclass
left outer join pluspsalesorder
on pluspsalesorder.salesordernum=pluspbillline.salesordernum
and pluspsalesorder.siteid=pluspbillline.siteid
Run Code Online (Sandbox Code Playgroud)
在Oracle SQL Developer 4.0.0.13(连接到DB2数据库)中,我在下面的斜体下面得到一条波浪线:"来自pluspbillline "和"left outer join workorder ".
警告说"pluspbillline与连接图的其余部分断开连接".这是什么意思?
Ewa*_*anw 30
我也得到了这个.我不确定如何表达它,但错误似乎是基于代码的逻辑流程.
基本上是因为你pluspbillline
之前提到的表workorder
我认为它希望连接是on pluspbillline.siteid=workorder.siteid
等等.
似乎连接条件的顺序应该从第一个识别的表流向最新的表.所以下面应该让它开心:
plusbillline to workorder on pluspbillline.siteid=workorder.siteid...
"" to ticket on pluspbillline.ticketid = ticket.ticketid...
"" to pluspsalesorder on pluspbillline.salesordernum = pluspsalesorder.salesordernum...
Run Code Online (Sandbox Code Playgroud)
我不相信这会改变oracle的工作(假设你没有使用优化器提示)所以如果你讨厌那些波浪线,我只会费心去改变.
我不确定是什么导致 Oracle SQL Developer 给出错误。但我将此评论放在这里是为了正确格式化它。
连接图可能看起来像这样
pluspbillline ------+----< workorder
|
+----< ticket
|
+----< pluspsalesorder
Run Code Online (Sandbox Code Playgroud)
图表上的线条可能标有连接字段。但这给了你一个基本的想法。
我不明白您收到此警告的任何原因。也许您的 SQL 中的列名拼写错误?或者 Oracle 界面中的某些怪癖无法正确理解 DB2 元数据?我建议尝试 IBM 的工具,看看这是否只是他们的程序。