Подтвердить что ты не робот

SQL Developer "отключен от остальной части графика соединения"

У меня есть следующий 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), я получаю squiggly строку под следующим курсивом: "from pluspbillline" и "левый внешний порядок соединения".

Предупреждение говорит, что "pluspbillline отключается от остальной части графика соединения". Что это значит?

4b9b3361

Ответ 1

Я не уверен, что заставляет Oracle SQL Developer давать ошибку. Но я помещаю этот комментарий здесь, чтобы отформатировать его должным образом.

Граф соединения может выглядеть примерно так:

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

Линии на графике могут быть помечены полями объединения. Но это дает вам основную идею.

Я не вижу причин, по которым вы получаете это предупреждение. Возможно, есть окошка с именем столбца на вашем SQL-сервере? Или некоторые причуды в интерфейсе Oracle, что он не понимает метаданные DB2 правильно? Я предложил попробовать инструмент IBM, чтобы убедиться, что это просто их программа.

Ответ 2

Я тоже это получил. Я не совсем уверен, как сформулировать это, но ошибка, кажется, основана на логическом потоке кода.

По существу, потому что вы упоминаете таблицы 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...

Я не верю, что это изменило бы работу оракула (при условии, что вы не используете подсказки оптимизатора), поэтому я бы потрудился изменить, только если вы ненавидите волнистые линии.