[SDem]
Новичок
SELECT с максимальной датой
Добрый день всем.
Здадача такова: есть 2 таблицы с компанияями и котировками их акций.
Табл. 1 companies:
id
name
Табл. 2 indexes:
id
parent
value
date
В таблице companies находятся названия компаний, соответственно в таблице индексов находится стоимость акций этих компаний и дата обновления стоимости. Причём дата обновления не заменяется каждый раз во время обновления инфы, а просто в таблицу indexes добавляется ещё одна строка с новой датой и ценой. Таким образом в таблице индексов всегда содержится несколько строк привязанных по паренту к одной и той же компании, но сразными датами обновления.
ЗАДАЧА: Необходимо выбрать из таблицы компаний все компании и к каждой из них выбрать по одной строке с самым свежим индексом.
Делаю так:
SELECT c.name, i.value, i.date
FROM companies as c LEFT JOIN indexes as i
ON i.parent=c.id AND
GROUP BY i.parent
Проблема в том, что выбираются не последние значения, даже если добавить ORDER BY date DESC - всё равно ничего не получается, потому как сортируется уже результат выборки. Можно ли вообще осуществить такой запрос? А то я склоняюсь к мысли что нет (. Сразу скажу, что решения с изменением структуры таблиц и способа заполения не пригодятся, так как работаем в рамках ЦМС с определёнными жесткими требованиями к таблицам.
Добрый день всем.
Здадача такова: есть 2 таблицы с компанияями и котировками их акций.
Табл. 1 companies:
id
name
Табл. 2 indexes:
id
parent
value
date
В таблице companies находятся названия компаний, соответственно в таблице индексов находится стоимость акций этих компаний и дата обновления стоимости. Причём дата обновления не заменяется каждый раз во время обновления инфы, а просто в таблицу indexes добавляется ещё одна строка с новой датой и ценой. Таким образом в таблице индексов всегда содержится несколько строк привязанных по паренту к одной и той же компании, но сразными датами обновления.
ЗАДАЧА: Необходимо выбрать из таблицы компаний все компании и к каждой из них выбрать по одной строке с самым свежим индексом.
Делаю так:
SELECT c.name, i.value, i.date
FROM companies as c LEFT JOIN indexes as i
ON i.parent=c.id AND
GROUP BY i.parent
Проблема в том, что выбираются не последние значения, даже если добавить ORDER BY date DESC - всё равно ничего не получается, потому как сортируется уже результат выборки. Можно ли вообще осуществить такой запрос? А то я склоняюсь к мысли что нет (. Сразу скажу, что решения с изменением структуры таблиц и способа заполения не пригодятся, так как работаем в рамках ЦМС с определёнными жесткими требованиями к таблицам.