Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787

Не могу правильно составить SQL запрос

13.11.2013, 19:28. Показов 1101. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, хочу в SQL запросе посчитать сумму, таким кодом считаю разницу в валюте
C++
1
2
3
4
                DataM->ADOQuery->Close();
                DataM->ADOQuery->SQL->Text="SELECT *, (Price * :M) AS Цена FROM  "+ListBox1->Items->Strings[ListBox1->ItemIndex];
                DataM->ADOQuery->Parameters->ParamByName("M")->Value=Edit1->Text;
                DataM->ADOQuery->Open();
но как туда еще добавить чтоб считало сумму.
Есть поле Qty, это количество, нужно его умножить на поле Price
как это добавить в мой код ?
C++
1
SELECT *, (Price * :M, Price * Qty ) AS Цена FROM  "+ListBox1->Items->Strings[ListBox1->ItemIndex];
Выдает ошибку
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2013, 19:28
Ответы с готовыми решениями:

SQL запрос не могу составить
Здравствуйте уважаемые форумчане, у меня такой вопрос...имеется в общем код. void __fastcall TForm1::Button6Click(TObject *Sender) {...

Правильно составить sql запрос
Необходимо заменить \http: на http: проблема в символе \ Поправьте меня: UPDATE element SET name = ( REPLACE (name, '\http:',...

Как правильно составить SQL-запрос?
Пытаюсь писать службу, взаимодействующую с SQL. Вопрос по запросу у меня....имеется следующий код protected override void OnStart(string...

14
164 / 49 / 27
Регистрация: 04.06.2013
Сообщений: 636
13.11.2013, 21:54
Цитата Сообщение от tdo22 Посмотреть сообщение
C++
1
SELECT *, (Price * :M, Price * Qty ) AS Цена FROM  "+ListBox1->Items->Strings[ListBox1->ItemIndex];
Выдает ошибку
Так сдесь перед + стоят непонятные кавычки

Добавлено через 17 секунд
какая именно ошибка???
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
13.11.2013, 21:58  [ТС]
Цитата Сообщение от mish_k98 Посмотреть сообщение
Так сдесь перед + стоят непонятные кавычки

Добавлено через 17 секунд
какая именно ошибка???
я эту строку взял с кода, который сверху, если на него посмотреть там видно зачем кавычки.
Ошибка:
Code
1
First chance exception at $76CEC41F. Exception class EOleException with message 'Ошибка синтаксиса (запятая) в выражении запроса '(Price * ?, Prise* Qty)''. Process Project1.exe (2616)
0
164 / 49 / 27
Регистрация: 04.06.2013
Сообщений: 636
13.11.2013, 22:06
не знаю чем помочь,пробовал у себя, так мне вообще другую ошибку даёт,правда код не копия вашего.

Добавлено через 40 секунд
если не принципиально, попробуй просто сделать 2 запроса.
1
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
13.11.2013, 22:35  [ТС]
можно пример как сделать двумя запросами ?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
13.11.2013, 23:02
но как туда еще добавить чтоб считало сумму?
Вот так
C++
1
"SELECT( Price * Qty ) AS Цена  FROM  " +ListBox1->Items->Strings[ListBox1->ItemIndex];
Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
       ADOQuery->Close();
       AnsiString text  = "SELECT *FROM (SELECT (Price * :M) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       text += " UNION ALL ";
       text += " SELECT *FROM (SELECT(Price * Qty) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       ADOQuery->SQL->Clear();
       ADOQuery->SQL->Text = text;
       ADOQuery->Parameters->ParamByName("M")->Value=Edit1->Text;
       ADOQuery->Open();
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
14.11.2013, 00:48  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Вот так
C++
1
"SELECT( Price * Qty ) AS Цена  FROM  " +ListBox1->Items->Strings[ListBox1->ItemIndex];
Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
       ADOQuery->Close();
       AnsiString text  = "SELECT *FROM (SELECT (Price * :M) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       text += " UNION ALL ";
       text += " SELECT *FROM (SELECT(Price * Qty) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       ADOQuery->SQL->Clear();
       ADOQuery->SQL->Text = text;
       ADOQuery->Parameters->ParamByName("M")->Value=Edit1->Text;
       ADOQuery->Open();
на второй строке ошибка:
Code
1
2
3
[bcc32 Error] Core.cpp(159): E2141 Declaration syntax error
  Full parser context
    Core.cpp(143): parsing: void _fastcall TMainForm::ListBox1DblClick(TObject *)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.11.2013, 00:58
А какая у тебя версия Билдера?
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
14.11.2013, 00:59  [ТС]
XE5
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.11.2013, 01:00
А так?
C++
1
2
3
4
5
6
7
8
       ADOQuery->Close();
       AnsiString text  = L"SELECT *FROM (SELECT (Price * :M) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       text += L" UNION ALL ";
       text += L" SELECT *FROM (SELECT(Price * Qty) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       ADOQuery->SQL->Clear();
       ADOQuery->SQL->Text = text;
       ADOQuery->Parameters->ParamByName("M")->Value=Edit1->Text;
       ADOQuery->Open();
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
14.11.2013, 01:02  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
А так?
C++
1
2
3
4
5
6
7
8
       ADOQuery->Close();
       AnsiString text  = L"SELECT *FROM (SELECT (Price * :M) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       text += L" UNION ALL ";
       text += L" SELECT *FROM (SELECT(Price * Qty) AS Цена  FROM " + ListBox1->Items->Strings[ListBox1->ItemIndex]);
       ADOQuery->SQL->Clear();
       ADOQuery->SQL->Text = text;
       ADOQuery->Parameters->ParamByName("M")->Value=Edit1->Text;
       ADOQuery->Open();
так я тоже делал, не помогло,
почему-то ругается на +
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.11.2013, 01:04
UnicodeString text
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
14.11.2013, 01:11  [ТС]
не помогло, сейчас попробую сделать на параметрах

Добавлено через 3 минуты
сделал так:
C++
1
2
3
4
5
6
7
8
       DataM->ADOQuery->Close();
       DataM->ADOQuery->SQL->Text = "SELECT *FROM (SELECT (Price * :A) AS Цена  FROM :B)";
       DataM->ADOQuery->Parameters->ParamByName("A")->Value=Edit1->Text;
       DataM->ADOQuery->Parameters->ParamByName("B")->Value=ListBox1->Items->Strings[ListBox1->ItemIndex];
       DataM->ADOQuery->SQL->Text = " UNION ALL ";
       DataM->ADOQuery->SQL->Text = " SELECT *FROM (SELECT(Price * Qty) AS Цена  FROM :C)";
       DataM->ADOQuery->Parameters->ParamByName("C")->Value=ListBox1->Items->Strings[ListBox1->ItemIndex];
       DataM->ADOQuery->Open();
выдает:
Code
1
First chance exception at $76CEC41F. Exception class EOleException with message 'Ошибка синтаксиса в предложении FROM'. Process Project1.exe (7148)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.11.2013, 01:17
Начнём с того что параметры должны писаться после текста запроса, а у тебя они посредине запроса. Поставь их перед Open
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
14.11.2013, 01:39  [ТС]
ставил уже, даже если пишу только так:
C++
1
2
3
4
5
       DataM->ADOQuery->Close();
       DataM->ADOQuery->SQL->Text = "SELECT * FROM (SELECT (Price * :A) AS Цена  FROM :B)";
       DataM->ADOQuery->Parameters->ParamByName("A")->Value=Edit1->Text;
       DataM->ADOQuery->Parameters->ParamByName("B")->Value=ListBox1->Items->Strings[ListBox1->ItemIndex];
       DataM->ADOQuery->Open();
видает:
Code
1
First chance exception at $76CEC41F. Exception class EOleException with message 'Ошибка синтаксиса в предложении FROM'. Process Project1.exe (4744)
Добавлено через 20 минут
Вот так работает:
C++
1
2
3
4
5
6
7
8
       DataM->ADOQuery->Close();
       AnsiString text  = "SELECT * FROM (SELECT *,(Price * :M) AS Цена  FROM "+ListBox1->Items->Strings[ListBox1->ItemIndex]+")";
       text += " UNION ALL ";
       text += " SELECT * FROM (SELECT *,(Price * Qty) AS Сумма  FROM "+ListBox1->Items->Strings[ListBox1->ItemIndex]+")";
       DataM->ADOQuery->SQL->Clear();
       DataM->ADOQuery->SQL->Text = text;
       DataM->ADOQuery->Parameters->ParamByName("M")->Value=Edit1->Text;
       DataM->ADOQuery->Open();
Но, теперь в гриде появляеться две строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2013, 01:39
Помогаю со студенческими работами здесь

Не могу составить запрос правильно :/
Что хочу сделать: ввожу дату предполагаемого въезда - мне выводится список комнат, которые свободны (Брони, которая бы припадала на данный...

Не могу правильно составить запрос
Задача запроса - выбрать самую последнюю запись по каждой из трех пластиковых зарплатных карт. Запрос у меня был такой: SELECT...

Как правильно составить SQL запрос в Delphi
Нужно чтобы текст который находится в EDIT1 переходил в запрос try ADOQuery4.SQL.Clear; ADOQuery4.SQL.Add('SELECT * FROM...

Как правильно составить запрос к SQL Server?
всем привет! программа должна по нажатию кнопки писать в базу данных: this.textBox2.Text = "1"; ...

Подскажите как правильно составить sql запрос
Имеются две никак между собой не связанных табилцы (БД MYSQL), в первой таблице 4 поля и во второй таблице 4 поля, нужно взять какое-нибудь...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru