我一共有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'? –