我想知道如何获取所有购买的订单以及某些商品。我有一个主项目表,其中包含大约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
答案 0 :(得分:3)
您可以尝试编写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
答案 1 :(得分:2)
像这样? (替换您自己的表名)
select * from [Order]
where [OrderNo] in (
select distinct [OrderNo]
from [Order] o
inner join [MasterItem] m on o.[ItemCode] = m.[ItemCode]
)
子查询获取其中包含所需项目的订单列表,然后用于从“订单”表中选择所有行。换句话说,这将返回所有Order
行(任何项),其中MasterItem
表中的项列表中的顺序是有项的。
答案 2 :(得分:0)
使用内部联接
SELECT * FROM Order o
JOIN Item i ON i.itemCode = o.itemCode
答案 3 :(得分:0)
使用内部联接:
select * from ordertable o
inner join mastertable m on o.itemcode=m.itemcode
答案 4 :(得分:0)
我希望使用存在
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
)