SQL代码来说明 - (这是T-SQL是SQL Server的友好,但我没有任何mysql方便,最后一个查询应该做一些细微的修改(以适应你的表名),在MySQL中也可以很好地工作。
我的逻辑是为每个product_id找到最近的company_order。我有我可以加入公司ny_order_id到company_order,并且我有每个product_id的每个最近company_order的shipment_id
DROP TABLE #shipment
DROP TABLE #company_order
DROP TABLE #company_order_item
CREATE TABLE #shipment
(
shipment_id INT ,
shipping_date INT
) ;
CREATE TABLE #company_order
(
company_order_id INT ,
shipment_id INT ,
company_id INT
) ;
CREATE TABLE #company_order_item
(
company_order_item_id INT ,
company_order_id INT ,
product_id INT
) ;
INSERT INTO #shipment
(shipment_id , shipping_date)
VALUES
(1 , 1),
(2 , 2),
(3 , 3)
INSERT INTO #company_order
(company_order_id , shipment_id , company_id)
VALUES
(1 , 1 , 1),
(2 , 2 , 1),
(3 , 3 , 1)
INSERT INTO #company_order_item
(company_order_item_id , company_order_id , product_id)
VALUES
(1 , 1 , 1) ,
(2 , 1 , 2),
(2 , 2 , 2),
(1 , 1 , 3),
(1 , 3 , 4)
SELECT
product_id ,
shipment_id
FROM
(
SELECT
product_id ,
MAX(company_order_id) AS company_order_id
FROM
#company_order_item
GROUP BY
product_id
) AS MostRecentProductInOrder
INNER JOIN #company_order
ON MostRecentProductInOrder.company_order_id = #company_order.company_order_id
辉煌!正是我需要的。我花了好几个小时试图搞定这个:没意识到你可以做这样的子选择。非常感谢。 – Steve 2010-03-12 07:35:30