SQL Developer"与连接图的其余部分断开连接"

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的工作(假设你没有使用优化器提示)所以如果你讨厌那些波浪线,我只会费心去改变.

  • 我也是第一次在SQL Developer 4.x中看到过这个.我能够通过重新安排我的连接顺序来安抚警告.我有这种情况,我不得不使用连接表从2个相关的表中获取正确的记录集,例如a + b + c,其中b只有2列bA-ID和bC-ID - 我有拥有:...从b内部加入a bA-ID = a.ID内部连接c在bC-ID = c.ID (4认同)

War*_*enT 0

我不确定是什么导致 Oracle SQL Developer 给出错误。但我将此评论放在这里是为了正确格式化它。

连接图可能看起来像这样

pluspbillline  ------+----<  workorder
                     |
                     +----<  ticket
                     |
                     +----<  pluspsalesorder
Run Code Online (Sandbox Code Playgroud)

图表上的线条可能标有连接字段。但这给了你一个基本的想法。

我不明白您收到此警告的任何原因。也许您的 SQL 中的列名拼写错误?或者 Oracle 界面中的某些怪癖无法正确理解 DB2 元数据?我建议尝试 IBM 的工具,看看这是否只是他们的程序。