我一共有4桌在這裏工作:SQL多左加入多個標準
產品表: PRODUCT_ID,product_desc
數據1 的product_id,LOCATION_ID,DATA1
數據2 PRODUCT_ID,LOCATION_ID,DATA2
數據3 PRODUCT_ID,LOCATION_ID,DATA3
我遇到的問題不是每個product_id或location_id都包含在每個數據表中。我已經設法爲第一個數據表正確地提取數據,但是在data1中不存在product_id或location_id但在data2中存在的情況下,該查詢沒有成功。我知道這是由於條件回到data1,但我不知道如何在那裏得到location_nbr。我確實有另一個表格列出了所有的位置編號,但這些表格與項目表的任何位置都沒有關聯,所以我沒有辦法加入。
select
item1.*
,coalesce(data1.location_id, data2.location_id, data3.location_id) as location_id
,data1.data1
,data2.data2
,data3.data3
from item1
LEFT OUTER JOIN data1 AS data1
ON data1.product_id = item1.ksn_id
LEFT OUTER JOIN data2 AS data2
ON data2.product_id = item1.ksn_id
and data2.location_nbr = data1.location_nbr
LEFT OUTER JOIN data3 AS data3
ON data3.product_id = item1.ksn_id
and data3.locn_nbr = data1.location_nbr
很難跟隨你問這裏有什麼,你將所有東西都加入到'item1'中,但'data2'和'data3'加入到'data1'字段中。在數據不在'data1'的情況下,你會使用什麼標準來連接'data2'和'item1'? –