Левое соединение с условием соединения

Предположим, у меня есть 2 таблицы:

    Table_1 has |Product_ID|Max_Date
    Table_2 has |Invoice_ID|Product_ID|Sale_Date|Amount_Sold

В Table_2 хранятся все продажи продуктов.

Я хочу объединить таблицы таким образом, чтобы получить SUM(Amount_Sold) из Table_2, сгруппированных по Product_ID, но только с учетом продаж, которые произошли до Max_Date для каждого продукта из Table_1.

Я старался

SELECT * FROM 
(SELECT * FROM Table_1)a 
LEFT JOIN 
(SELECT Product_ID,Sale_Date,SUM(Amount_Sold) FROM Table_2 GROUP BY Product_ID)b
ON a.Product_ID=b.Product_ID AND b.Sale_Date<a.Max_Date

но он не вернул правильные суммы.

Я думаю, что ответ может быть примерно таким, но я не смог его понять... mysql: Как ВНУТРЕННЕЕ СОЕДИНИТЬ таблицу, но ограничить соединение одним результатом с наибольшим количеством голосов или количеством голосов?

Есть идеи? Заранее спасибо.


person Alberto Cattan    schedule 14.05.2013    source источник


Ответы (1)


Вы можете включить критерии даты в условное соединение, что также упрощает чтение соединений, ИМХО.

SELECT t2.product_id, sum(amount_sold)
    FROM Table_1 t1 INNER JOIN Table_2 t2
    ON t1.product_id = t2.product_id AND t2.sale_date <= t1.max_date
    GROUP BY t2.product_id
person Steven Mastandrea    schedule 14.05.2013