powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Запрос: оставить значения на последнюю дату
6 сообщений из 6, страница 1 из 1
Запрос: оставить значения на последнюю дату
    #38482994
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Ломаю голову над запросом: есть таблица цен, в которой цена и да на которую она установлена

Таким вот образом получаю список товара, цены и дату:
Код: sql
1.
2.
3.
SELECT Pricelists.PrlName, Entities.EntName, Prices.Value, Prices.OnDate FROM Prices, Entities, Pricelists
WHERE Entities.EntID = Prices.EntID and Pricelists.PrlID = Prices.PrlID
ORDER BY Prices.PrlID, Entities.EntName



Результат следующий:
автор"MAG15 Попасная 15","3* коньяк Элит 0,5 Оквин","38.9","2012-11-26 00:00:00"
"MAG15 Попасная 15","3* коньяк Элит 0,5 Оквин","39.25","2013-07-25 00:00:00"
"MAG15 Попасная 15","3* коньяк ордин 0,25 Одесса","21.5","2012-02-11 00:00:00"
"MAG15 Попасная 15","3* коньяк ордин 0,25 Одесса","19.45","2012-11-24 00:00:00"
"MAG15 Попасная 15","3* коньяк ордин 0,25 Одесса","23.7","2013-09-16 00:00:00"
"MAG15 Попасная 15","3* коньяк ордин 0,5 Одесса","39","2013-04-17 00:00:00"

Как бы отсеять значения на последнюю дату чтоб получить следующее?
автор"MAG15 Попасная 15","3* коньяк Элит 0,5 Оквин","38.9","2012-11-26 00:00:00"
"MAG15 Попасная 15","3* коньяк Элит 0,5 Оквин","39.25","2013-07-25 00:00:00"
"MAG15 Попасная 15","3* коньяк ордин 0,25 Одесса","23.7","2013-09-16 00:00:00"
"MAG15 Попасная 15","3* коньяк ордин 0,5 Одесса","39","2013-04-17 00:00:00"
...
Рейтинг: 0 / 0
Запрос: оставить значения на последнюю дату
    #38483276
Тут посмотри .
Варианты >= 2 должны работать и на твоем сервере...
...
Рейтинг: 0 / 0
Запрос: оставить значения на последнюю дату
    #38483582
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, спасибо.

рабочий вариант:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT Pricelists.PrlName, Entities.EntName, t1.*
from Prices t1, 
(
SELECT EntID, MAX(OnDate) AS pDate
FROM Prices
GROUP BY EntID
) v,
Pricelists, Entities
WHERE t1.EntID = v.EntID
and t1.OnDate = v.pDate
and Entities.EntID = t1.EntID and Pricelists.PrlID = t1.PrlID
ORDER BY t1.PrlID, Entities.EntName
...
Рейтинг: 0 / 0
Запрос: оставить значения на последнюю дату
    #38483792
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ан нет :-(
Таблица имеет 4 измерения: Магазин (PrlID), Товар (EntID), Цена (Value), Дата (OnDate)

Но группировкой в подзапросе я убиваю возможность разбить товар по магазинам:
Код: sql
1.
2.
3.
SELECT prlid, entid, MAX(OnDate) as pDate, value
FROM Prices
GROUP BY entid



Не использовать группировку тоже нельзя, так как тогда результатом будет 1 строка с максимальной датой.
...
Рейтинг: 0 / 0
Запрос: оставить значения на последнюю дату
    #38485409
Jevgeniy,

кто мешает группировать в том числе и по магазину? а при джойне добавить условие на равенство не только по товару, но и по магазину же?
...
Рейтинг: 0 / 0
Запрос: оставить значения на последнюю дату
    #38485615
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, утро вечера мудренее, спасибо.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT Pricelists.PrlName, Entities.EntName, t1.*
from Prices t1, 
(
SELECT  entid, MAX(OnDate) as pDate, prlid
FROM Prices
GROUP BY entid, prlid
ORDER BY prlid
) v,
Pricelists, Entities
WHERE t1.EntID = v.EntID
and t1.OnDate = v.pDate and v.prlid = t1.prlid
and Entities.EntID = t1.EntID and Pricelists.PrlID = t1.PrlID
ORDER BY Pricelists.PrlID, Entities.EntName
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Запрос: оставить значения на последнюю дату
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]