我想知道如何获得与特定商品组一起购买的所有订单。我有一个主项目表,其中包含大约90个基于项目,我有我的订单表,其中包含所有收据。所以输出节目显示了我的物品表中与我的基础物品一起购买的所有订单。
ItemCode
-------
10001
10002
10003
10004
SiteID BusinessDate ItemName Units Sold Units Sale ItemCode OrderNo
----------------------------------------------------------------------------
1 06/08/2018 Apple 1 5 10001 122-1
1 06/08/2018 Coffee 1 16 10002 122-1
1 06/08/2018 Ice Tea 2 7 10044 122-1
1 06/08/2018 Beans 9 18 10004 122-1
4 06/08/2018 Donuts 7 17 10066 122-7
1 06/08/2018 Bread 1 7 10003 122-4
1 06/08/2018 Beans 4 8 10004 122-4
2 06/08/2018 Apple 2 5 10001 122-2
2 06/08/2018 Coffee 1 6 10002 122-2
3 06/08/2018 Bread 3 5 10003 122-3
3 06/08/2018 Beans 7 17 10004 122-3
3 06/08/2018 Ice Tea 7 17 10044 122-5
4 06/08/2018 Ice Coffee 7 17 10050 122-6
SiteID BusinessDate ItemName Units Sold Units Sale ItemCode OrderNo
----------------------------------------------------------------------------
1 06/08/2018 Apple 1 5 10001 122-1
1 06/08/2018 Coffee 1 16 10002 122-1
1 06/08/2018 Ice Tea 2 7 10044 122-1
1 06/08/2018 Beans 9 18 10004 122-1
1 06/08/2018 Bread 1 7 10003 122-4
1 06/08/2018 Beans 4 8 10004 122-4
2 06/08/2018 Apple 2 5 10001 122-2
2 06/08/2018 Coffee 1 6 10002 122-2
3 06/08/2018 Bread 3 5 10003 122-3
3 06/08/2018 Beans 7 17 10004 122-3
查询输出必须返回仅与我的物料主表值一起购买的所有交易,例如输出查询未返回订单号:122-6,因为物料代码不在我的主物料代码中显示订单号:122-1,因为我的ItemCode中有一个或两个存在于订单和主项目表中
您可以尝试编写一个子查询,OrderNo
和SiteID
匹配。
然后做join
到[Order]
表来获得你期望的结果。
SELECT o.*
FROM [Order] o JOIN
(
SELECT DISTINCT OrderNo,SiteID
FROM MasterItem m
JOIN [Order] o on o.ItemCode = m.ItemCode
) t1 on t1.OrderNo = o.OrderNo and t1.SiteID = o.SiteID
像这样的东西? (替换你自己的表名)
select * from [Order]
where [OrderNo] in (
select distinct [OrderNo]
from [Order] o
inner join [MasterItem] m on o.[ItemCode] = m.[ItemCode]
)
子查询获取包含所需项目的订单列表,然后用于从Orders表中选择所有行。换句话说,这将返回所有Order
行(任何项目),其中MasterItem
表中的项目列表中的项目中存在项目。
使用内部联接
SELECT * FROM Order o
JOIN Item i ON i.itemCode = o.itemCode
使用内连接:
select * from ordertable o
inner join mastertable m on o.itemcode=m.itemcode
我会用存在的
select * from [Order] o
where exists(select 1 from
(SELECT DISTINCT OrderNo,SiteID
FROM MasterItem m
JOIN [Order] o on o.ItemCode = m.ItemCode
) t
where t.OrderNo=o.OrderNo and t.SiteID=o.SiteID
)