Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Агрегатные функции (Ganz) 01/08/2005 - 13:05:27
      Re: Агрегатные функции (Ganz) 01/08/2005 - 13:09:40
      Re: Злободневная тема :) (Валентин) 01/08/2005 - 13:56:51
      Re: Re: Злободневная тема :) (Ganz) 01/08/2005 - 14:09:37
      Re: Пользуйтесь наздоровье! (Ganz) 01/08/2005 - 14:33:21
      Re: Интересный вариант (Валентин) 01/08/2005 - 16:18:48
      Re: Интересный вариант (Ganz) 01/08/2005 - 17:38:02
      Re: Такой вариант (Валентин) 01/08/2005 - 18:44:02
      Re: Такой вариант (Ganz) 01/08/2005 - 19:48:02
      Re: Такой вариант (Dinky) 16/08/2005 - 23:24:39
      Re: Агрегатные функции (Имя) 24/01/2012 - 15:16:27

> Original message text:
> From: Ganz - 01/08/2005 - 13:05:27
> Subject:Агрегатные функции
> -----------------
> Имеется простая задача:
>
> Товар1 Цена11 Дата11
> Товар1 Цена12 Дата12
> Товар1 Цена13 Дата13
> Товар2 Цена21 Дата21
> Товар2 Цена22 Дата22
> Товар2 Цена23 Дата23
> Товар3 Цена31 Дата31
> Товар3 Цена32 Дата32
>
> Необходимо отобразить актуальные цены товаров на заданную дату.
> Делаю такой запрос:
>
> SELECT Товар, Цена, MAX(Дата)
> FROM Товары
> GROUP BY Товар
> ORDER BY Товар
>
> В результате получается фигня: у меня отображается не актуальная цена, а цена находящаяся на первой позиции после группирования записей, например (см. исходную таблицу):
>
> Товар1 Цена11 Дата13
> Товар2 Цена21 Дата22
> Товар3 Цена31 Дата32
>
> Подскажите где ошибка.
>


From: Валентин - 01/08/2005 - 18:44:02
Subject:Такой вариант
-----------------
можно либо в select положить, а можно и в where, подход разный и обработка разная, пример через where

select t.товар, t.цена, t.дата
from товары t
where t.дата=(select max(t2.дата) from товары t2 where t2.товар=t.товар and t2.дата<=[дата])
Order by t.товар;

пример корректный, если на 1 дату нет 2-х цен, иначе ошибки не будет, но и пример некорректый.
в select тоже самое, то каждую цену извлекать подзапросом.
SELECT t.Товар
, (select t2.цена from товары t2 where t2.товар=t1.товар and t2.дата<=[дата] order by t2.дата desc limit 1) as цена
, MAX(t.Дата)
FROM Товары t
where t.дата<=[дата]
GROUP BY t.Товар
ORDER BY t.Товар


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
40959



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |