Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > ПОМОГИТЕ!


Автор: Адель 26.9.2005, 12:21
Пожалуйста помогите запрос написать, не используя представления.

Вывести блюдо, имеющее минимальную калорийность.

Есть две таблицы: Bluda и Producty. Таблица Sostav - ассоциативная таблица между ними.
Таблица Bluda содержит поля Bludo, Vid и первичный ключ bl.
Таблица Producty содержит поля Product, belki, Zhyry, yglevody и первичный ключ pr.
Ассоциативная таблица Sostav содержит поля: внешний ключ bl, внешний ключ pr и поле ves.

Вот запрос, который выводит калорийность каждого блюда:
select bludo, sum(((belki+yglevody)*4.1+zhyry*9.3)/1000*ves)
from producty, sostav, bluda
where bluda.bl=sostav.bl and sostav.pr=producty.pr
group by bludo;


p.s. IBConsole 6

Автор: Alex 26.9.2005, 12:54
Если ничего не напутал, то результат запроса будет отсортирован по второму полю (по возрастанию) и в первой записе будет нужное тебе блюдо
Код

select bludo, sum(((belki+yglevody)*4.1+zhyry*9.3)/1000*ves) as kalor
from producty, sostav, bluda
where bluda.bl=sostav.bl and sostav.pr=producty.pr
group by bludo
order by 2;

Добавлено @ 12:56
Если мой метод подходит, то можно ограничит результат запроса, что бы он выдавал только одну строку. Как это сделать смотри здесь http://forum.vingrad.ru/index.php?showtopic=57108

Автор: Адель 27.9.2005, 18:36
СПАСИБО! У меня все заработало. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)