Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.029 c
1-1107868491
nes
2005-02-08 16:14
2005.02.20
В чём дело...пишет что Undeclared Identifer ShellExecute ?


4-1105249313
ArchValentin
2005-01-09 08:41
2005.02.20
Непонятки с ShellExecute...


11-1091002852
M5
2004-07-28 12:20
2005.02.20
Как в МСК/КОЛ узнать, что нажата нужная клавиша и отреагировать?


14-1106953426
Narik
2005-01-29 02:03
2005.02.20
Скачайте Demo Delphi 2005


6-1102718598
pipll
2004-12-11 01:43
2005.02.20
Индикатор загрузки сети