это небольшая часть гораздо большего запроса, который, как я обнаружил, является проблемой.
Я пытаюсь добавить фильтр к своему внешнему объединению в дополнение к первичному ключу.Проблема в том, что я получаю результаты, которые имеют StatusCode, отличный от 0 или 1, как если бы он игнорировал фильтр.
SELECT *
FROM Products P
LEFT OUTER JOIN OrderDetails OD ON OD.SkuNum = P.SkuNum
LEFT OUTER JOIN OrderHeader OH ON (OD.ShipmentNum = OH.ShipmentNum
AND (OH.StatusCode = 0 OR OH.StatusCode = 1))
WHERE P.SkuNum = XXXX
Обратите внимание, что если я добавлю этот оператор (OH.StatusCode = 0 ИЛИOH.StatusCode = 1) в предложении where он фильтрует весь набор результатов по этим критериям, что тоже не то, что я хочу.
Для этого соединения на простом английском я пытаюсь сказать: «Дай мне все»продукты и другие вещи, не перечисленные здесь . Если есть какие-либо поставки для этого продукта, предоставьте мне все детали для них, когда партия имеет статус 1 или 0 "
Мой синтаксиснеправильно или я что-то упустил?Спасибо.
Редактировать: Обновлен запрос для включения продуктов, чтобы сделать его более понятным, и я исправил ошибку транспонирования.