我有一个查询,该查询只是获取一个表,然后通过1个表上的2个字段和另一个表上的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
);