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

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

24.09.2010, 12:49. Показов 7428. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru