【发布时间】:2014-04-05 05:39:13
【问题描述】:
我在这里总共处理 4 个表:
产品表: 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 中存在的情况下。我知道这是由于 on 条件返回到 data1,但我不确定如何在其中获取 location_nbr。我确实有另一个表列出了所有位置编号,但这些与 item 表的任何地方都没有关联,所以我无法加入。
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?