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

时间:2013-11-27 12:18:52

标签: 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

在Oracle SQL Developer 4.0.0.13(连接到DB2数据库)中,我在下面的斜体下面出现了一条波浪线:“来自 pluspbillline ”和“left outer join workorder ”。

警告说“pluspbillline与连接图的其余部分断开连接”。这是什么意思?

4 个答案:

答案 0 :(得分:28)

我也得到了这个。我不确定如何表达它,但错误似乎是基于代码的逻辑流程。

基本上是因为你在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...

我不相信这会改变oracle的工作(假设你没有使用优化器提示)所以如果你讨厌那些波浪线,我只会费心去改变。

答案 1 :(得分:0)

我不确定导致Oracle SQL Developer出错的原因。但是我在这里把这个评论正确地格式化了。

连接图可能看起来像这样

pluspbillline  ------+----<  workorder
                     |
                     +----<  ticket
                     |
                     +----<  pluspsalesorder

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

我没有看到你收到此警告的任何理由。你的SQL中的列名拼写错误也许?或者Oracle的界面中有些怪癖它不能正确理解DB2元数据?我建议尝试使用IBM的工具来查看它是否仅仅是他们的程序。

答案 2 :(得分:0)

此问题是由Oracle过程具有与您要加入的表中的列相同的命名输入参数引起的。
即如果您有WHERE bank_nbr = BankDept.bank_nbr,则输入名为bank_nbr的参数和一个表BankDept.bank_nbr将导致错误。 我通过将输入参数重命名为in_bank_nbr并更新了我的读取位置来解决了该问题in_bank_nbr = BankDept.bank_nbr

答案 3 :(得分:0)

当我将鼠标悬停在“ LEFT”单词上时,我有相同的消息,但是整个查询都没有问题。另一方面,当我将鼠标悬停在“ WITH”上时,我得到了有关重组整个查询的一些建议。因此,有关断开连接的消息可能不是错误的迹象,而是有关句子过于复杂的警告。 SQLDeveloper的编辑器没有提到问题的严重程度。