Опять MAX(date)

Name

Новичок
Опять MAX(date)

Код:
invoice_id | date_received
1          | 2004-04-01
2          | 2004-05-01
3          | 2004-06-01


invoice_id | product_id | cost
1          | 1          | 10
2          | 1          | 20
3          | 1          | 30
1          | 2          | 100
2          | 2          | 90
Надо вытащить cost c максимальной датой для каждого product_id.
product_id | cost
1 | 30
2 | 90

Что то как то не выходит.
 

Гюльчатай

Guest
может стоит попробовать сложный запрос?
т.е. в условие where поставить еще один селект

select product_id ,cost from tab1 inner join tab2 on tab1.invoice_id = tab2.invoice_id where (invoice_id +date_received) in (select invoice_id +max(date_received) from tab1)

за синтаксис не ручаюсь, т.к. в mysql недавно, но я в похожей задаче делала так.

-~{}~ 04.06.04 09:29:

ой, лажанулась маленько)
еще поля invoice_id и date_received, в условии нужно привести к одному типу. ну думаю идея ясна, пробуй.
 

chira

Новичок
если предположить , что у инвойса с максимальной датой будет максимальный invoice_id
можно так:
Код:
CREATE TEMPORARY TABLE tt AS
SELECT product_id, MAX(invoice_id) invoice_id
FROM table2
GROUP BY 1

SELECT t.product_id, t.cost
FROM table2 t, tt
WHERE t.invoice_id=tt.invoice_id
  AND t.product_id=tt.product_id
 
Сверху