Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2009, 13:41   #1
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию Сложности с запросом

емеется 3 таблицы - ДИСК, ДИСК_ЗАКАЗ, ЗАКАЗ

ДИСК
id | название | цена|
1 | один | 200 |
2 | три | 120 |
3 | два | 300 |

ДИСК ЗАКАЗ
id_disc | id_zakaz| количество |
1 | 1 | 2
2 | 1 | 3
1 | 2 | 4
3 | 2 | 5

ЗАКАЗ
id | дата
1 | 03.03.2009
2 | 04.04.2009

Необходимо посчитать стоимость заказа, т.е. сначала высчитывается частичная стоимость заказа, в таблице диск_заказ "добавляется поле", в котором умножается цена диска, на количество, указанное в таблице ДИСК_ЗАКАЗ(это я сделал ), и нужно сложить значение этого поля с одинаковым id'ом заказа, и вывести эти значения в третьем поле таблицы заказ...
Пишу на Delphi, при помощи ADOQuery.
как составить такой запрос? чтобы суммировал строки одного поля, когда значение строк другого поля( id_zakaz) равны? и выводил их в таблицу ЗАКАЗ.
т.е. в конце необходимо получить таблицу

ЗАКАЗ
id | дата| стоимость заказа|
1 | 03.03.2009| x |
2 | 04.04.2009| x |
х надо высчитать одним запросом при помощи двух предъидущих табшлиц)
Спасибо.

P.S. токо начал изучать SQL , только бред какойто получается, подскажите если вообще возможно такой запрос выполнить)
Kolik317 вне форума Ответить с цитированием
Старый 14.08.2009, 14:01   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

кагтотаг
Код:
select
  z.id,
  z.i_date,
  sum(dz.qty * d.price) sum_zakaz
from
  disc d, 
  disc_zakaz dz,
  zakaz z
where 0=0
   and z.id = dz.id_zakaz
   and dz.id_disc = d.id
group by z.id, z.i_date
order by z.i_date
soleil@mmc вне форума Ответить с цитированием
Старый 14.08.2009, 14:08   #3
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию

СПАСИБО СПАСИБО СПАСИБО, БЛАГОдарю!!!!
Kolik317 вне форума Ответить с цитированием
Старый 19.08.2009, 11:14   #4
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию

Блин, теперь у меня еще одно проблема, есть ещё одна таблица, менеджер - надо расчитать сумму стоимостей заказов, выполненных каждым менеджером, т.е. таблица заказ связывается с таблицей менеджер по id_manager в табе заказ и по id менеджеррра в таблице менеджер))
надо наверно как-то подзапросы использовать... я пробовал делать так
select
m.id,
m.name,
sum(sum(dz.koli4 * d.цена)) as sum_manager
from
диск d,
диск_заказ dz,
заказ z,
менеджер m
where 0=0
and m.id=z.id_man
and z.id = dz.id_zakaz
and dz.id_disk = d.id
group by m.id
но пишет что невозможно использование статической функции в выражении... как правильно делать надо?
Kolik317 вне форума Ответить с цитированием
Старый 19.08.2009, 12:05   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

может так получится
Код:
select 
m.id,
m.name,
sum(dz.koli4 * d.цена) as sum_manager
from
диск d, 
диск_заказ dz,
заказ z,
менеджер m
where 0=0
and m.id=z.id_man
and z.id = dz.id_zakaz
and dz.id_disk = d.id
group by m.id, m.name
soleil@mmc вне форума Ответить с цитированием
Старый 19.08.2009, 12:09   #6
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию

пипееец ну я чайник))) скул не поддаётся моей логике))) спасибо))))
Kolik317 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложности с решением задач у полного чайника osipvs Помощь студентам 9 31.07.2009 17:17
Сложности с вычислениями Adlar Microsoft Office Access 0 23.06.2009 22:20
Задача по Паскалю. 1 уровень сложности. Сергей1 Помощь студентам 2 19.11.2007 22:45