我想找到哪个
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 以便一个值(时间)位于查询的开头。
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 |