SQL для запроса строк, не имеющих значения

#sql

#sql

Вопрос:

Я пытаюсь запросить все строки таблицы «частей», даже если их упорядоченное число равно none. Это вызывает у меня проблему, потому что, когда упорядоченное число отсутствует в таблице «order_line», оно не отображает элемент как не имеющий ни одного (что, по сути, является причиной этого вопроса в назначении)

Вот мой sql для поиска всех частей с упорядоченным номером:

     SELECT PART.PART_NUM,
  PART.DESCRIPTION,
  PART.ON_HAND,
  PART.PRICE,
  ORDERS.ORDER_NUM,
  ORDER_LINE.NUM_ORDERED
FROM PART
INNER JOIN ORDER_LINE
ON PART.PART_NUM = ORDER_LINE.PART_NUM
INNER JOIN ORDERS
ON ORDER_LINE.ORDER_NUM = ORDERS.ORDER_NUM
ORDER BY PART.PART_NUM
  

Это для школы, поэтому, если бы вы могли просто указать мне правильное направление, это было бы здорово. Надеюсь, это имело смысл..

Комментарии:

1. Вам нужно использовать внешнее соединение.

Ответ №1:

используйте ‘left outer join’ вместо ‘inner join’ для таблицы order_line

РЕДАКТИРОВАТЬ: как указал Мартин, вам необходимо заменить оба «внутренних соединения» на «левое внешнее соединение»

Комментарии:

1. Это будет преобразовано обратно во внутреннее соединение следующим соединением, если это единственное внесенное изменение.

2. спасибо Мартин — я пропустил это — исправил мой ответ

Ответ №2:

Как вы можете видеть, когда вы указываете ВНУТРЕННЕЕ СОЕДИНЕНИЕ, это означает, что для того, чтобы строка была в результирующем наборе, она должна состоять из существующей строки с левой стороны соединения и существующей строки с правой стороны.

Но ВНУТРЕННЕЕ СОЕДИНЕНИЕ — не единственный способ ОБЪЕДИНЕНИЯ таблиц. Вы также можете использовать ВНЕШНЕЕ соединение СЛЕВА или СПРАВА, для которого требуется, чтобы строка содержалась только в одной из двух таблиц (все значения, которые были бы получены с другой стороны СОЕДИНЕНИЯ, в результирующем наборе равны НУЛЮ). Существует даже ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ, для которого требуется строка с любой из двух сторон.

Для получения дополнительной информации найдите OUTER JOIN в своей документации.

Комментарии:

1. Большое спасибо. Я рассмотрю различные типы объединений, в которых явно отсутствует некоторое понимание различий.