Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
Delphi 6-7

Sql запрос на вывод суммы заказа

04.06.2018, 15:59. Показов 7418. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, необходимо создать запрос, что бы выводилась сумма одного заказа, а не всех. В заказе может быть несколько наименований разных видов.
Вот так считаю стоимость всех напитков в заказах. Заранее спасибо
SQL
1
2
3
4
SELECT SUM( Выражение1)
FROM (SELECT Заказ_напитков.Количество, Напитки.Цена, [Заказ_напитков.Количество]*[Цена] AS Выражение1
FROM Напитки INNER JOIN Заказ_напитков ON Напитки.Код_напитка = Заказ_напитков.Напиток
WITH OWNERACCESS OPTION)
а как одного заказа сумму подсчитать там и блюда и напитки. Структуру бд прилагаю и сразу вопрос, в таблице в строке заказа, должна выводится эта сумма
Миниатюры
Sql запрос на вывод суммы заказа  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2018, 15:59
Ответы с готовыми решениями:

Запрос: подсчёт суммы заказа и вывод итога в поле
Добрый вечер. Нужна помощь с подсчётом суммы заказа. Даны для этого две таблицы: "Товар", где есть поле "Цена...

Запрос на sql, выводящий стоимость максимального заказа
Помогите пожалуйста, нужно сделать запрос на sql,что бы он выводил стоимость максимального заказа.

SQL запрос Delphi 7 по количеству стоимости заказа
У меня эсть две таблицы DBGrid1 DBgrid2. В DBGrid1 поля - количество товара и стоимость заказа. В DBgrid2 поле стоимость товара. Как мне...

42
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 15:50
Студворк — интернет-сервис помощи студентам
если в таблице нет поля заказ, откуда он данные взял для неправильного запроса???
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 15:52  [ТС]
krapotkin,
SQL
1
INNER
добавила в ваш запрос и получила, это, а так была ошибка From
Изображения
 
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 15:55
я вообще ничего не понимаю
давайте так тогда
SQL
1
2
3
4
SELECT ZN.*, N.*
FROM Заказ_напитков ZN
INNER JOIN Напитки N ON (ZN.Напиток = N.Код_напитка)
WHERE ZN.заказ=2
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 15:56  [ТС]
krapotkin, вот второй и третий запрос.
Вложения
Тип файла: rar db1.rar (1.09 Мб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 15:58  [ТС]
krapotkin, интригующая запись
Миниатюры
Sql запрос на вывод суммы заказа  
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 16:13
ну вот последняя-то верная
она такая и должна быть

Добавлено через 1 минуту
соответственно должно быть и
SQL
1
2
SELECT SUM(ZN.Количество*N.Цена) FROM
то же окончание запроса
должно давать правильную сумму
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 16:32  [ТС]
krapotkin, Cпасибо ну да, но я хотела сумму то есть заказано то есть 50 вода + 40 spite

Добавлено через 3 минуты
krapotkin, извините, последнее сообщение не увидела. а сумма общая заказа будет, если сложить данные обоих запросов

Добавлено через 9 минут
krapotkin,
SQL
1
2
3
SELECT SUM(ZN.Количество*N.Цена)
FROM Заказ_блюд AS ZN INNER JOIN Блюда AS N ON ZN.Название = N.[Код Блюда]
WHERE ZN.заказ=1;
Сумма заказанных блюд так не работает((((((((
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 16:44
тогда показывайте содержание таблиц
у меня нечем открыть Access
должна работать абсолютно так же

Добавлено через 1 минуту
Цитата Сообщение от kerasa Посмотреть сообщение
но я хотела сумму то есть заказано то есть 50 вода + 40 spite
стопэ
у вас в заказе 2 заказано 15 фант и всё
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 16:47  [ТС]
krapotkin, нет, там не 15 фант, вот все три таблицы плюс что нужно прописать в id что бы сумма менялась при переходе к следующей записи. я про запрос сумма заказанных напитков
Миниатюры
Sql запрос на вывод суммы заказа  
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 16:52
ну а как же??
смотрим заказ напитков, там для заказа 2 написано только напиток 4 кол-во 15
в заказе блюд для заказа 2 есть только 10 штук блюда №2

Добавлено через 31 секунду
так что все верно
укажете другой номер заказа, посчитает для него
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 17:13  [ТС]
krapotkin, а автоматически никак, по переходу к следующей записи, в Delphi

Добавлено через 3 минуты
krapotkin,
SQL
1
2
3
SELECT SUM(ZN.Количество*N.Цена)
FROM Заказ_напитков AS ZN INNER JOIN Напитки AS N ON ZN.Напиток = N.Код_напитка
WHERE ZN.заказ=Заказ.[Номер заказа];
Вот так не идет
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 19:58
Цитата Сообщение от kerasa Посмотреть сообщение
Заказ.[Номер заказа];
это простите что обозначает??
где в вашем выражении FROM таблица заказ, к которой вы обращаетесь ??

о какой следующей записи вы говорите?
если вы еще что-то держите в уме, то любо скажите всем, либо вернемся к той теме, что вы обозначили

вам надо выбрать все данные для конкретного заказа
при этом само выражение для любого заказа одинаково
для этого и применяются параметры в запросах
https://www.cyberforum.ru/blog... g5254.html
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 20:56  [ТС]
krapotkin, переходя от заказа к заказу, должна выводится сумма заказанных блюд, заказанных напитков и сумма заказа. этого изначально я и добиваюсь, без изменения вручную кода заказа и всё это через ADOQuery в Delphi
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 21:41
переходя от заказа к заказу, вы имеете номер заказа из вашего текущего датасета
а рассмотренный нами SQL запрос имеет параметр - номер заказа
удачное совпадение
если задать это значение параметра и переоткрыть наш запрос про суммы то получим значения для этого параметра

если чего.. переход по вашему датасету каждый раз вызывает событие OnAfterScroll

Добавлено через 1 минуту
Цитата Сообщение от kerasa Посмотреть сообщение
переходя от заказа к заказу, должна выводится сумма заказанных блюд
Цитата Сообщение от kerasa Посмотреть сообщение
необходимо создать запрос, что бы выводилась сумма одного заказа, а не всех
найдите 10 отличий
если вы задаете один вопрос, а ответ ищете на другой...
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 21:56  [ТС]
krapotkin,
Delphi
1
2
3
4
with datamodule1.ADOQuery5 do
begin
sql.Text:='SELECT SUM(ZN.Количество*N.Цена) FROM Заказ_напитков AS ZN INNER JOIN Напитки AS N ON ZN.Напиток = N.Код напитка SELECT SUM(ZN.Количество*N.цена)WHERE ZN.заказ= +'ADOTablezak.FieldByName(Код_заказа');
open;
Так??
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 22:05
в целом - так
но если внимательно посмотреть

#2 WHERE заказ=:order_id
#5 WHERE заказ=:order_id
WHERE заказ=:order_id
#7 WHERE заказ=:order_id
#10 WHERE N.заказ=:order_id
#13 WHERE Напитки.заказ=:order_id
#32 параметры в запросах
https://www.cyberforum.ru/blog... g5254.html
может все-таки прочесть про параметры???
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 22:30  [ТС]
krapotkin, order_id - это ваша объявление у меня [Номер заказа]. Вы имеете в видду использовать например 'param' и ему присваивать поле.

Добавлено через 17 минут
krapotkin, помогите пожалуйста, я умру, если еще один день с этим просижу
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
05.06.2018, 22:42
Всегда SQL запрос содержит какие-то условия. Что-то типа такого
SQL
1
SELECT T.Field1, T.Field2 FROM TABLE T WHERE T.Field3= 'Ваня'
на следующей строке нам нужно
SQL
1
SELECT T.Field1, T.Field2 FROM TABLE T WHERE T.Field3= 'Таня'
а потом
SQL
1
SELECT T.Field1, T.Field2 FROM TABLE T WHERE T.Field3= 'Федор'
пишем один раз в начале программы (а еще лучше прямо в дизайнере формы)
Delphi
1
Query1.SQL.Text := 'SELECT T.Field1, T.Field2 FROM table T WHERE T.Field3=:param1';
вот param1 это и есть параметр
для такого случая нам нужно только заполнить значение параметра и переоткрыть датасет
Delphi
1
2
Query1.Parameters.ParamByName('param1').Datatype := ftString;
Query1.Parameters.ParamByName('param1').Value := 'Таня';
все что в запросе начинается на двоеточие - это параметры
их нужно задавать
как задавать параметры написано в статье
если вы ее прочли, то точно должны знать
значит не прочли

:order_id это параметр
Delphi
1
2
Query1.Parameters.ParamByName('order_id').Datatype := ftinteger;
Query1.Parameters.ParamByName('order_id').Value := ADOTablezak.FieldByName('Номер заказа').Value;
Добавлено через 2 минуты
SQL
1
2
3
4
SELECT SUM(ZN.Количество*N.Цена) AS S
FROM Заказ_напитков ZN
INNER JOIN Напитки N ON (ZN.Напиток = N.Код_напитка)
WHERE ZN.заказ=:order_id
Добавлено через 2 минуты
SQL
1
2
3
4
SELECT SUM(ZB.Количество*B.Цена) AS S
FROM Заказ_блюд ZB
INNER JOIN Блюда B ON (ZB.Блюдо = B.Код_блюда)
WHERE ZB.заказ=:order_id
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 106
05.06.2018, 22:59  [ТС]
krapotkin,
Delphi
1
2
3
4
5
6
7
8
9
procedure TDataModule1.ADOQuery5AfterScroll(DataSet: TDataSet);
begin
with datamodule1.ADOQuery5 do
begin
datamodule1.ADOQuery5.Parameters.ParamByName('order_id').Datatype := ftinteger;
datamodule1.ADOQuery5.Parameters.ParamByName('order_id').Value := ADOTablezak.FieldByName('Íîìåð çàêàçà').Value;
open;
end;
end;
Не выводит результат(((
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
06.06.2018, 07:12
тут две ошибки, но на результат они не влияют
1. строку 3,4,8 надо убрать совсем
2. в методе класса обращение к переменной этого класса - это ошибка
так что вместо datamodule1.ADOQuery5 пишите просто ADOQuery5

3. а эта - влияет.
датасет нужно ПЕРЕОТКРЫТЬ. т.е. закрыть и открыть. Открытие уже открытого бесполезно.

4. эта вообще главная, но не успела проявиться еще из-за (3)
насколько я понял, вы хотите при перемещении по ADOTABLEZAK делать запросы на сумму по заказу
а процедура у васADOQUERY5Afterscroll.
не у того объекта обработчик-то!
тем более если вы в обработчике перемещения по ADOQuery5 вы переоткроете ADOQuery5, то опять сработает этот обработчик, который вызовет этот же обработчик, который этот обработчик вызовет еще раз, а там вызовется этот обработчик.........


И это все при условии, что вы поместили правильный запрос в ADOQuery5.SQL
давайте так. если у вас и после этого не будет работать.
1. вы показываете, что у вас в ADOQuery5.SQL
2. запрос, который сейчас в ADOQuery5.SQL вы запускаете в Access и показываете результат
3. показываете код, который получился после исправлений.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2018, 07:12
Помогаю со студенческими работами здесь

Отбор договоров по контрагентам и вывод общей суммы заказа в документе.
Есть парочка задач: 1. в документе имеется реквизит контрагенты, и договор. При выборе контрагента нужно, чтобы в поле договор...

Запрос суммы строк в sql
Здравствуйте, подскажите пожалуйста что я делаю не так хочу сделать так чтобы сумма полей выводилось в отдельном столбце сумма строк по...

Не работает запрос суммы с параметром SQL
Доброго времени суток! Пишу запрос if (RadioGroup4.ItemIndex=1) then begin try ADOQuery3.SQL.Clear; ...

SQL-запрос произведения и суммы полей
Добрый день. не могу составить запрос к базе access в котором бы производилось умножение полей "Цена_ОК" и "Кол_шт_ОК"....

Запрос sql для суммы колонки
Приветствую! Есть запрос: UPDATE . Set ЧИСЛО1 = ЧИСЛО3/ЧИСЛО2 Где ЧИСЛО* там поля из БД... Мне нужно написать запрос где в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru