繁体   English   中英

根据一个表中的唯一 ID 连接多个表

[英]Joining Multiple tables based on a unique ID in one table

我想根据从第一个表中获取的 ID 加入多个表。

这是一个例子:

地点:

ID 位置 ID
1 25
2 15
3 33

序列化表:

位置 ID 产品ID 序列号
25 4545454 ABC123
25 1231233 CBA321
25 5432121 BCA213

非序列化表:

位置 ID 产品ID 数量
25 6786788 3
25 9898989 15
25 8786678 24

我正在尝试返回一个看起来像这个结果表的表

ID Location_ID 产品_ID 序列号 数量
1 25 4545454 ABC123 NULL
1 25 1231233 CBA321 NULL
1 25 5432121 BCA213 NULL
1 25 6786788 NULL 3
1 25 9898989 NULL 15
1 25 8786678 NULL 24
SELECT
    Location.ID AS ID,
    Location.LocationID AS Location_ID,
    *** NOT SURE how to fetch ProductID From Both Tables *** Product_ID, 
    Serialized.SerialNumber AS Serial_Num,      
    NonSerialized.Quantity AS Quantity,
    FROM Location
    INNER JOIN NonSerialized ON Location.LocationID = NonSerialized.LocationID
    INNER JOIN Serialized ON Location.LocationID = Serialized.LocationID
    WHERE Location.ID = 1 
select loc.Id, loc.locationId, s.ProductId, s.SerialNumber, null as Quantity   
from Location loc
inner join Serialized s on loc.LocationId = s.locationId
where loc.Id = 1
union
select loc.Id, loc.locationId, ns.ProductId, null, ns.Quantity   
from Location loc
inner join nonSerialized ns on loc.LocationId = ns.locationId
where loc.Id = 1

会做的。 您需要合并 2 组数据中的数据。

你需要做一个联合,从两个表中获取行:

select loc.ID, loc.LocationID, s.ProductID, s.SerialNumber, 
       null as Quantity
  from Location loc
  join Serialized s on s.ID = loc.ID
union all
select loc.ID, loc.LocationID, ns.ProductID, null as SerialNumber, 
       ns.Quantity
  from Location loc
  join NonSerialized ns on ns.ID = loc.ID

为避免多次加入Location ,您可以将UNION ALL放在派生表中

select
  loc.Id,
  loc.locationId,
  s.ProductId,
  s.SerialNumber,
  s.Quantity   
from Location loc
inner join (
    select
      s.locationId,
      s.SerialNumber,
      null as Quantity
    from Serialized s
    union all
    select
      ns.locationId,
      null,
      ns.Quantity
    from nonSerialized ns
) s on loc.LocationId = s.locationId
where loc.Id = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM