Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте, Уважаемые специалисты!
Такая ситуация: есть таблица "prices" с полями "id, period, firmID, nomenklaturaID, edinizaID, price". Необходимо построить такой запрос, чтобы получить всю номенклатуру с последними ценами, которые относятся к текущей фирме (firmID). Т.е. задача сводится к тому, чтобы получить записи с максимальной датой max(period) у которых есть фильтр по firmID. На выходе должна получиться таблица с полями "id, nomenklaturaID, edinizaID, price". Как написать быстро работающий запрос, чтобы он был без временных таблиц и подзапросов??
Заранее благодарю!
Отредактированно bazifal (04.09.2010 13:07:55)
Неактивен
С указанными Вами ограничениями — никак
Ну то есть под ограничения подходит, например, денормализационная таблица,
которая хранит только последние данные. Или чтение курсором
А если без ограничений — ближе всего
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;
Неактивен
paulus написал:
С указанными Вами ограничениями — никак
Ну то есть под ограничения подходит, например, денормализационная таблица,
которая хранит только последние данные. Или чтение курсором
А если без ограничений — ближе всего
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;
Очень жаль...
Попробую использовать Ваш вариант!
Спасибо большое! )
Неактивен
Страниц: 1