Текущий архив: 2005.02.20;
Скачать: CL | DM;
Внизсложная выборка в теле процедуры ib Найти похожие ветки
← →
KETT (2005-01-20 21:02) [0]Добрый вечер
Помогите пожалуйста кто-нить с запросом. Я окончательно запутался. Структуру базы менять поздно :(
блин, сложно объяснить
Есть две таблицы:
Список накладных
_________________________________
ID Name Date Поставщик
1 Накладная-1 04.01.05 Поставщик-1
2 Накладная-2 05.01.05 Поставщик-2
3 Накладная-3 07.01.05 Поставщик-3
Товар
_________________________________
№ накладной Model Кол-во Цена
1 abvgd-1 3 1300
1 dgvba-3 7 7500
3 abvgd-1 5 1150
Необходимо сделать выборку, чтобы получить суммированное кол-во товара с ценой с самого последнего прихода т.е
__________
Model
abvgd-1 8 1150 --- цена с накладной #3
gdvba-3 7 7500
С суммированием я вроде бы разобрался, а вот как быть с выборкой последней цены..
← →
KETT (2005-01-20 21:31) [1]Может кто знает как в таком случае можно выбрать цену используя максимальный номер накладной ? Что-то вроде "select cost from products where id=max"..
← →
YurikGL © (2005-01-20 22:02) [2]Не помню, позволяет ли IB так делать, но попробуй делать выборку из процедуры, которая тебе возвращает твой максимум.
← →
DrPass © (2005-01-20 23:44) [3]Если ты пишешь процедуру, то что тебе мешает сделать несколько запросов?
select max(id) from ... into :mid;
select cost from products where id=:mid;
Можно и одним запросом -
select cost from products where id in (select max(id) from ...)
Только не лучше не поступай так с IB (хотя именно в отношении 7 версии я могу и ошибаться), ее мудрый оптимизатор скорее всего будет вызывать подзапрос для каждой обрабатываемой строчки
← →
Deniz (2005-01-21 08:49) [4]Цена по последней дате по каждой модели:
for
select t.model, max(n.date)
from <Товар> t
inner join <Список накладных> n on (n.nomer = t.id)
group by t.model
into :model, :m_date
do begin
select t.cost
from <Товар> t
inner join <Список накладных> n on (n.nomer = t.id)
where (t.model = :model) and (n.date = :m_date)
end;
может есть какие ошибки(писал без проверки)
← →
Johnmen © (2005-01-21 09:15) [5]>DrPass © (20.01.05 23:44) [3]
>Только не лучше не поступай так с IB (хотя именно в отношении 7 версии я могу и ошибаться), ее мудрый
>оптимизатор скорее всего будет вызывать подзапрос для каждой обрабатываемой строчки
Вообще говоря, это не зависит от версии и оптимизатора, а зависит от вида запроса...
Страницы: 1 вся ветка
Текущий архив: 2005.02.20;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.042 c