#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. Большое спасибо. Я рассмотрю различные типы объединений, в которых явно отсутствует некоторое понимание различий.