Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/33: Рейтинг темы: голосов - 33, средняя оценка - 4.94
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109

SQL запрос с условиями

24.09.2010, 12:49. Показов 7331. Ответов 80
Метки нет (Все метки)

Доброго времени суток. У меня такой вопрос: нужно составить запрос SQL так что бы присутствовали операторы IF.

Если быть точнее, ситуация такая: нужно сформировать таблицу в которой изначально есть совпадения, но по ходу формирования нужно, их исключать при этом сумировать количество, типа, если уже есть запись, в поле Count (Количество) прибавить соответствующее значение...

что можете посоветовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2010, 12:49
Ответы с готовыми решениями:

Вывод 3 столбцов с условиями после выполнения SQL запроса
Помогите пожалуйста сделать запрос. with qqry do begin SQL.Clear; SQL.Add('SELECT SUM(PRICE) FROM OOC WHERE...

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

sql запрос для БазыДанных с условиями
Уваж Форумчане! Поправьте новичка! Пишу запрос для схемы БД! Дайте пару советов по корректировке! Выбрать все товары по стоимости ниже...

80
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 09:46  [ТС]
убрал, все как нужно просумировал, и вывел результат в отчет...
Миниатюры
SQL запрос с условиями  
0
215 / 215 / 20
Регистрация: 18.05.2010
Сообщений: 865
30.09.2010, 09:56
DenProx, Не уверен что эти последовательность строк
Delphi
1
2
 DM.QBlock.SQL.Add('WHERE (Stend_ID=:Key)');
 DM.QBlock.Active:=True;
отработают нормально, не задано значение для параметра Key

а вот эту конструкцию
Delphi
1
2
3
      DM.QDetail.SQL.Add('SELECT tblDetailSpr.Price, tblDetail.*');
      DM.QDetail.SQL.Add('FROM  tblDetailSpr INNER JOIN tblDetail ON tblDetailSpr.[Key] = tblDetail.Price_ID');
      DM.QDetail.SQL.Add('WHERE Block_ID = '+IntToStr(DM.QBlockSpr['Key']));
советую избегать. Дело в том что когда ваш запрос получает Server SQL он ищет его в своем кеше и если находит то запускает его сразу и не тратит время на оптимизацию. Для него следующие два запроса разные
SQL
1
SELECT * FROM t WHERE f=1
и
SQL
1
SELECT * FROM t WHERE f=2
но если вы используете параметры то они будут одинаковы. Вот первый ваш случай с использованием параметров более правильный и считается хорошим тоном программирования с БД. Ваши строчки я бы переписал так
Delphi
1
2
3
4
      DM.QDetail.SQL.Add('SELECT tblDetailSpr.Price, tblDetail.*');
      DM.QDetail.SQL.Add('FROM  tblDetailSpr INNER JOIN tblDetail ON tblDetailSpr.[Key] = tblDetail.Price_ID');
      DM.QDetail.SQL.Add('WHERE Block_ID = :Key'));
      DM.QDetail.Parameters.ParamValues['Key']:=IntToStr(DM.QBlockSpr['Key']);
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 09:59  [ТС]
Башир, спасибо! Учту на будущее
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 10:00
DenProx, понимаете в чем проблема... у вас, конечно, убрались якобы лишние строки, но вас не смущает, что вы посчитали суммы по цене 42р., но там также есть и 28 и 56р. ИМХО, данные некорректные...
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 10:04  [ТС]
Lord_Voodoo, 42р. это цена конкретной детали за одну шт., одна и таже деталь не может стоить по разному...

Добавлено через 1 минуту
Башир, что то ваш пример не работает... пишет что параметр Key не найден
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 10:29
DenProx, вы данные посмотрите, что присылали нам... понимает в чем фишка, sql - это же не поделка индуского мальчика, и если она вам группировала одно и то же наименование 3 раза, значит у строк есть отличия... проверьте свои данные еще раз...
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 10:36  [ТС]
Lord_Voodoo, ну естественно есть разница... и проверять не нужно, я и так знаю, в каждом блоке есть деталь, и количество их может быть разным...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 10:52
DenProx, погодите... я начинаю допирать... а зачем вам избыточное поле? кто хранит в таблице цену, кол-во и сумму по этим данным?
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 11:06  [ТС]
Lord_Voodoo, Есть две таблицы, справочник и таблица содержащая списки деталей для блоков... фиксированые поля это Раздел, Наименование, Обозначение, кол-во на складе, цена. поле Количество и Сумма , имеют разные данные, Количество длякаждого блока свое, Сумма вычисляется в зависимости от Количества

Добавлено через 1 минуту
Все это потом заносится в отчет, где есть еще одно поле, "Необходимо" вычисляется путем вычитания количества на складе минус коичества используемого на стенде...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 11:47
DenProx, вам не надо хранить сумму в таблице, когда у вас есть кол-во и цена за одну деталь, вы в любой момент может посчитать сумму, а так - это избыточная информация
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 11:49  [ТС]
Lord_Voodoo, да я и не храню ее... сумма вычисляется в момент построения отчета...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 12:09
а что же тогда за поле у вас в запросе?
Sostav2.Nujno, Sostav2.Price, Sostav2.Summa
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 12:10  [ТС]
это таблица для построения отчета, в нее заносятся данные...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 12:26
DenProx, так по ней не группировать надо, а суммировать... тогда лишние строки ушли бы сами по себе
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 12:32  [ТС]
вот я и просумировал...)
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 12:46
DenProx, нет, не просуммировал, посчитал где-то отдельно, а потом его просто вывел на экран

что-то у вас никак с sql дружба не сложиться... хотя вроде бы уже давно занимаетесь...
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 12:48  [ТС]
Lord_Voodoo, на данный момент он работает так как мне нужно... меня это устраивает)
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 13:15
DenProx, ну это дело ваше... но пора бы уже код делать оптимальным, а не на коленке писанным...
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
30.09.2010, 13:17  [ТС]
Lord_Voodoo, да просто эта прога уже достала... мне бы уже избавиться от нее побыстрее)) уже скоро год будет как я ее делаю...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2010, 13:20
DenProx, всего лишь год... так вы, друг мой, еще только в начале пути... я один проект уже 3 года ковыряю... хотя уже вышел на ту стадию, когда программа живет своей жизнью без моего участия
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2010, 13:20

SQL запрос с несколькими не обязательными условиями
Добрый день, коллеги! Пытаюсь сделать выборку из базы данных с условиями. Условия указываются в нескольких Combobox (на текущий...

SQL запрос для поиска значений с 2-мя условиями
Задача: найти значение поля status по наибольшей дате(idate) для каждого (уникального) договора (id_dogovor) Таблица вида: ...

Запрос с условиями
Здравствуйте! Пишу админку для галереи. Всё работает...но хотелось бы сделать всё работало красиво :) В общем есть 2 таблица в базе, одна...

Запрос с условиями
Здравствуйте! Пишу админку для галереи. Всё работает...но хотелось бы сделать всё работало красиво В общем есть 2 таблица в базе, одна...

Запрос с противоположными условиями
Существует база с двумя таблицами один ко многим. Создаю запрос для выборки из главной таблицы записей по условию...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru