Member 14186603 Ответов: 2

Sql left join и inner join


Here is the SQL to my query (the link portion only). What is frustrating is I had linked this successfully and exited without saving. It has been a weekend and 2 working days and I have not been able to figure out the correct linking order. My left table (listed first after from) VTG_COPO_HIST contains all of the lines I need on it's own. When linked to the second table by order number, all of the required lines are there. However, I will need to link further by part number to pull in part number specific field points. When I link by part number with an inner join, I lose one row as that particular row in my VTG table is null for that field. So I change the join of the part # level to Left Join. The missing row still does not pull in. My guess is that I have something contradictory in my code to prevent it from including that null line.

FROM {oj VMFG.dbo.VTG_COPO_HIST LEFT OUTER JOIN VMFG.dbo.INVENTORY_TRANS ON VTG_COPO_HIST.PART_ID_NEW = INVENTORY_TRANS.PART_ID}
WHERE VTG_COPO_HIST.ORDER_ID = INVENTORY_TRANS.CUST_ORDER_ID AND ((VTG_COPO_HIST.ORDER_ID='h111212'))


Что я уже пробовал:

Я написал список возможных порядков и комбинаций внутренних/внешних соединений и перепробовал все возможные комбинации. Я погуглил и увидел на форумах, что он, как правило, имеет противоречивое утверждение "где", которое, если у меня есть, я не могу найти. Мне гораздо удобнее работать с VBA, SQL для меня совершенно новый язык.

OriginalGriff

Создайте небольшую "тестовую базу данных", содержащую несколько строк в каждой таблице.
Затем покажите нам эти строки, запрос, который вы выполняете против него, и результаты.
Затем объясните, что не так с результатами, и что именно вы ожидаете, что произойдет.

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

Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

ZurdoDev

Как мы можем помочь? У вас что-то не так в вашем sql, но как мы узнаем, что это такое? Это может быть в вашем предложении WHERE.

2 Ответов

Рейтинг:
0

W∴ Balboos, GHB

Не имея возможности видеть вашу таблицу, я могу дать вам "как" для проектирования ваших соединений и почему вы будете (или не будете) устранять строки.

До сих пор вы обнаружили, как внутреннее соединение с третьей таблицей уничтожит некоторые строки, и правильно поняли, что вам нужно левое соединение, чтобы сохранить все базовые строки из вашей основной таблицы.

Левое соединение покажет все выбранные строки в таблице верхнего уровня и либо значение, либо NULL для тех, кто находится в Объединенной таблице. Теперь, когда вы добавляете третью таблицу, вам нужно позаботиться о компоненте ON соединения. Предположим, что ваша третья таблица ищет значения во второй таблице. Если вы используете внутреннее соединение, то везде, где оно терпит неудачу, оно удалит всю строку, потому что устраняет второе табличное значение. Если вы используете левое соединение и сопоставляете значение с таблицей, в которой должна быть найдена связь. Вы должны нацелить его на правильный стол.

Ваша урезанная версия (выделенная часть была бы очень полезна для создания более конкретного ответа). Логический расклад будет история-&ГТ;заказ-и GT;часть.

Итак, перефразируя: Вы запрашиваете список предпочтительных клиентов и получаете заказы для этих клиентов, а затем компоненты для каждого заказа. По крайней мере, я бы так это изложил.

Но, как отмечалось в комментарии, предшествующем этому, вы не даете схему таблицы, и у нас недостаточно информации.


Рейтинг:
0

rammanusani

Похоже, проблема в предложении where