У меня есть запрос, который просто берет таблицу и присоединяется к другим таблицам влево, используя 2 поля в 1 и 3 поля в другой таблице, нет внутренних объединений.
Я сталкиваюсь с этим странным поведением, когда общий запрос, похоже, возвращает пустое значение для определенных полей из одной из соединенных таблиц. Такое поведение обычно указывает на то, что запрос не находит данных для присоединения к основной таблице в объединенной таблице. Проблема в том, что эти данные существуют. Еще более странным является то, что если я делаю какую-либо фильтрацию для записи, которая является пустой, будь то с помощью раскрывающегося запроса на доступ или добавлением предложения WHERE в мой запрос, данные теперь отображаются так, как они должны были изначально. Кажется, что фильтрация влияет на то, находит ли базовое объединение значение или нет. Насколько я понимаю, это не так, как должны работать левые соединения? Какие-нибудь мысли? Удаление другой таблицы из запроса, похоже, также решает проблему, но почему это повлияет на получение данных через левое соединение? Отношения размещены ниже для справки.
РЕДАКТИРОВАТЬ (добавлен запрос Sql):
SELECT
tbl_Supply1.CCT_Sales_Order AS Local_SO,
tbl_Supply1.CLEANED_CCT_SERIAL_LOT AS Local_Serial,
tbl_Supply1.Ship_Date AS Local_Date,
tbl_Supply1.STATUS AS Local_Status,
tbl_Supply1.PackingLeft,
tbl_Supply1.PackingRight,
dbo_cct_rfb_supplyone_data.sales_order AS Supply1_SO,
dbo_cct_rfb_supplyone_data.item_sn AS Supply1_Serial,
dbo_cct_rfb_supplyone_data.Date AS Supply1_Date,
dbo_cct_rfb_master_status_simple.item_cd AS Master_Item,
dbo_cct_rfb_master_status_simple.ser_lot_no AS Master_Serial,
dbo_cct_rfb_master_status_simple.disposition AS Master_Disposition,
dbo_cct_rfb_master_status_simple.linked_ret_lbl AS Master_Return_Label
FROM
(
tbl_Supply1 LEFT JOIN dbo_cct_rfb_supplyone_data ON (
tbl_Supply1.CLEANED_CCT_SERIAL_LOT = dbo_cct_rfb_supplyone_data.item_sn
)
AND (
tbl_Supply1.Ship_Date = dbo_cct_rfb_supplyone_data.date
)
AND (
tbl_Supply1.CCT_Sales_Order = dbo_cct_rfb_supplyone_data.sales_order
)
) LEFT JOIN dbo_cct_rfb_master_status_simple ON (
tbl_Supply1.PackingRight = dbo_cct_rfb_master_status_simple.ser_lot_no
)
AND (
tbl_Supply1.PackingLeft = dbo_cct_rfb_master_status_simple.item_cd
);