在发货中查找产品ID

问题描述 投票:0回答:1

我想找到哪个

ProductID
属于哪个
ShippingID
。我有
ProductMade
时间,所以我需要找到
ShippingTime
适合哪个
ProductMade
才能找到
ShippingID

我使用 MS Access 作为数据源。

产品

产品ID 产品制造
11205 2024-05-29 17:27
11921 2024-05-29 17:12
12324 2024-05-29 16:53
12328 2024-05-29 16:37
11851 2024-05-29 15:54
12354 2024-05-29 14:13
12333 2024-05-29 13:51
12342 2024-05-29 13:36
20014 2024-05-29 13:16
11822 2024-05-29 12:52

运输

运送时间 运输ID
2024-05-29 12:49 I0230
2024-05-28 19:31 J0130
2024-05-29 05:04 J0140
2024-05-29 13:37 J0340
2024-05-29 17:05 J0410
2024-05-28 17:07 J0430
2024-05-29 11:24 K0120
2024-05-29 07:01 K0310
2024-05-28 15:01 K0510
2024-05-28 23:43 K0830
2024-05-29 01:48 K0940
2024-05-29 10:12 K1020
2024-05-29 15:57 K1030
2024-05-28 22:02 K1220
2024-05-29 03:41 K1240
2024-05-29 15:51 K1340

我尝试过不同的SQL语句,但从未得到我想要的结果。我不知道如何正确使用 BETWEEN 以便一个值(时间)位于查询的开头。

sql sorting ms-access
1个回答
0
投票

BETWEEN 可能不会有用,因为在 ProductMade 的 Shipping 中没有两个字段位于中间。需要 ShippingTime 最接近并且 =>ProductMade 的运输 ID。这就涉及到一个相关子查询。请注意,对于大型数据集,这可能会执行缓慢。

SELECT Product.ProductID, Product.ProductMade, (
    SELECT TOP 1 ShippingID FROM Shipping 
    WHERE Product.ProductMade <= Shipping.ShippingTime
    ORDER BY ShippingTime) AS ShipID
FROM Product;
产品ID 产品制造 船舶ID
11205 5/29/2024 5:27:00 下午
11921 5/29/2024 5:12:00 下午
12324 5/29/2024 4:53:00 下午 J0410
12328 5/29/2024 4:37:00 下午 J0410
11851 5/29/2024 3:54:00 下午 K1030
12354 5/29/2024 2:13:00 下午 K1340
12333 5/29/2024 1:51:00 下午 K1340
12342 5/29/2024 1:36:00 下午 J0340
20014 5/29/2024 1:16:00 下午 J0340
11822 5/29/2024 12:52:00 下午 J0340
© www.soinside.com 2019 - 2024. All rights reserved.