2015-03-02 1 views
0
select i.description, p.cost, i.itemid,p.dateq as datessss 
from item i, (select itemid,max(date) as dateq,cost 
       from price group by itemid) p 
WHERE i.itemid = p.itemid 



description  cost itemid datessss 
ChickenRatePerKG 108  26  2015-03-02 
LiveBird   55.25 27  2015-03-02 
Eggs    197  28  2015-03-02 

Это моя цена таблицапроблемы с максимальной функцией в MySQL

itemid  date   cost 
28   2015-03-02 450 
28   2015-02-14 380 
28   2015-02-13 200 
28   2015-02-01 400 
28   2014-01-23 197 
28   2014-01-22 197 

Это извлечение правильной даты, но не цена, соответствующая дате.

Может кто-нибудь, пожалуйста, помогите мне найти проблему?

+0

Что вы ожидаемый результат? –

+0

Стоимость яиц должна быть 450, если дата изменена 2015-03-02 –

ответ

0

Вы можете сделать это по-разному, используя left join или с помощью not exists или correlated sub query

select 
i.description, 
i.itemid, 
p.cost, 
p.date as datessss 
from item i 
join price p on p.itemid = i.itemid 
left join price p1 on p1.itemid = p.itemid and p1.date > p.date 
where p1.itemid is null ; 

ИЛИ

select 
i.description, 
i.itemid, 
p.cost, 
p.date as datessss 
from item i 
join price p on p.itemid = i.itemid 
where not exists 
(
    select 1 from price p1 
    where p1.itemid = p.itemid and p1.date > p.date 
) 

DEMO

+0

Это сработало спасибо –

+0

Большое спасибо –

+0

Добро пожаловать! –

0

Не тестировался, но это должно сделать трюк:

select i.description, p.cost, i.itemid,p.dateq as datessss 
from item i, (select itemid,max(date) as dateq,cost 
       from price group by itemid having date=max(date)) p 
WHERE i.itemid = p.itemid 

Без having вы не знаете, в какой строке вы получаете.

Смежные вопросы