[英]Joining Multiple tables based on a unique ID in one table
I am wanting to join multiple tables based on a ID I fetch from the first table.我想根据从第一个表中获取的 ID 加入多个表。
Here is an example:这是一个例子:
Location:地点:
ID ![]() |
LocationID![]() |
---|---|
1 ![]() |
25 ![]() |
2 ![]() |
15 ![]() |
3 ![]() |
33 ![]() |
Serialized Table:序列化表:
LocationID![]() |
PoductID![]() |
SerialNumber![]() |
---|---|---|
25 ![]() |
4545454 ![]() |
ABC123 ![]() |
25 ![]() |
1231233 ![]() |
CBA321 ![]() |
25 ![]() |
5432121 ![]() |
BCA213 ![]() |
NonSerialized Table:非序列化表:
LocationID![]() |
PoductID![]() |
Quantity![]() |
---|---|---|
25 ![]() |
6786788 ![]() |
3 ![]() |
25 ![]() |
9898989 ![]() |
15 ![]() |
25 ![]() |
8786678 ![]() |
24 ![]() |
I am trying to return a table that looks like this Result Table我正在尝试返回一个看起来像这个结果表的表
ID ![]() |
Location_ID ![]() |
Product_ID![]() |
Serial_Num![]() |
Quantity![]() |
---|---|---|---|---|
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
would do it.会做的。 You need to union data from 2 sets of data.
您需要合并 2 组数据中的数据。
You need to do a union, to get the rows from both tables:你需要做一个联合,从两个表中获取行:
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
To avoid joining Location
multiple times , you can put the UNION ALL
inside a derived table为避免多次加入
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.