SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.09.2010 13:06:04

bazifal
Участник
Зарегистрирован: 04.09.2010
Сообщений: 4

Таблица цен товаров: выбрать самые последние по дате цены

Здравствуйте, Уважаемые специалисты!

Такая ситуация: есть таблица "prices" с полями "id, period, firmID, nomenklaturaID, edinizaID, price". Необходимо построить такой запрос, чтобы получить всю номенклатуру с последними ценами, которые относятся к текущей фирме (firmID). Т.е. задача сводится к тому, чтобы получить записи с максимальной датой max(period) у которых есть фильтр по firmID. На выходе должна получиться таблица с полями "id, nomenklaturaID, edinizaID, price".  Как написать быстро работающий запрос, чтобы он был без временных таблиц и подзапросов?? 

Заранее благодарю!

Отредактированно bazifal (04.09.2010 13:07:55)

Неактивен

 

#2 04.09.2010 13:28:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Таблица цен товаров: выбрать самые последние по дате цены

С указанными Вами ограничениями — никак smile
Ну то есть под ограничения подходит, например, денормализационная таблица,
которая хранит только последние данные. Или чтение курсором smile

А если без ограничений — ближе всего
SELECT p.*
FROM period p,
(SELECT MAX(period) AS period, nomenklaturaID
FROM prices
WHERE firmID = …
GROUP BY nomenklaturaID) s
WHERE p.firmID = … AND p.period = s.period AND p.nomenklaturaID = s.nomenklaturaID;

Неактивен

 

#3 04.09.2010 13:37:07

bazifal
Участник
Зарегистрирован: 04.09.2010
Сообщений: 4

Re: Таблица цен товаров: выбрать самые последние по дате цены

paulus написал:

С указанными Вами ограничениями — никак smile
Ну то есть под ограничения подходит, например, денормализационная таблица,
которая хранит только последние данные. Или чтение курсором smile

А если без ограничений — ближе всего
SELECT p.*
FROM period p,
(SELECT MAX(period) AS period, nomenklaturaID
FROM prices
WHERE firmID = …
GROUP BY nomenklaturaID) s
WHERE p.firmID = … AND p.period = s.period AND p.nomenklaturaID = s.nomenklaturaID;

Очень жаль...

Попробую использовать Ваш вариант!
Спасибо большое! smile)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson