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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2013, 13:44   #1
Pykhov
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 20
По умолчанию Не могу разобраться с SQL запросом точнее с конструкцией if then else

Запрос не работает
Код:
SELECT type_spiska, kod_type_pribor FROM Параметры
WHERE kod_type_pribor=kp AND
IF type_spiska & ts=ts THEN
type_spiska=type_spiska
ELSE type_spiska=-1
END

Последний раз редактировалось Stilet; 25.08.2013 в 13:57.
Pykhov вне форума Ответить с цитированием
Старый 25.08.2013, 14:00   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Задача то какая, словами скажите? Желательно и субд указать.
Для подобной цели надо использовать case в запросе, а if для другого рода задач нужен.
В вашем случае (насколько понимаю то, что написано) надо прописать что-то вроде
Код:
SELECT CASE type_spiska WHEN xxx THEN yyy ELSE zzz END, kod_pribor FROM ...
phomm вне форума Ответить с цитированием
Старый 25.08.2013, 14:12   #3
Pykhov
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 20
По умолчанию

DElphi задача с применением битовой маски, вывести все значения где (тип_списка & маска >0)

Последний раз редактировалось Pykhov; 25.08.2013 в 14:19.
Pykhov вне форума Ответить с цитированием
Старый 26.08.2013, 14:17   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Pykhov, чего голову людям морочите на разных форумах?
Нет в SQL конструкции if then else.
Скандербег вне форума Ответить с цитированием
Старый 26.08.2013, 14:33   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Нет в SQL конструкции if then else
Почему нет? Есть. В оракле, например. И в MSSQL, только без then. Другое дело, что это процедурные конструкции, которые в селекте нельзя использовать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2013, 14:48   #6
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Ну, Аватар, если есть такая фишка в SQL (допустим в стандарте 92), то чего вы не подскажете бедному ТС что делать?
Уж где он только эту свою кракозябру не показывал, нигде ему никто не рассказал в чем его промашка.
Скандербег вне форума Ответить с цитированием
Старый 26.08.2013, 15:03   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
чего вы не подскажете бедному ТС что делать?
А подсказка была:
Цитата:
Другое дело, что это процедурные конструкции, которые в селекте нельзя использовать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2013, 15:32   #8
Pykhov
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 20
По умолчанию

как тогда можно реализовать запрос
если бы я делал на delphi то написал так
maska =2;
if (tip_spiska and maska)=maska then parametr:=tip_spiska
а как можно реализовать на SQL
Pykhov вне форума Ответить с цитированием
Старый 26.08.2013, 15:42   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
WHERE type_spiska=CASE WHEN tip_spiska & 2 = 2 THEN type_spiska ELSE 1 END
Повторяюсь - на больших объемах такие запросы до фига и дольше будут работать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2013, 16:18   #10
Pykhov
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 20
По умолчанию

select * from Параметры
WHERE type_spiska=CASE WHEN type_spiska & 2 = 2 THEN type_spiska ELSE -1 END
Неопознанная ошибка. ругается на CASE (из эксперементов)

Последний раз редактировалось Pykhov; 26.08.2013 в 16:21.
Pykhov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться с очень нужной библиотекой, а точнее с её запуском shiftseo Общие вопросы по Java, Java SE, Kotlin 0 27.11.2012 00:10
SQL Update не могу разобраться kairat_tuyakbaev SQL, базы данных 10 24.09.2010 20:45
Не могу разобраться как отобразить в CTreeCtrl из БД SQL Боб Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 5 24.03.2010 18:18
Помогите разобраться с SQL-запросом MasterofCDM БД в Delphi 5 04.07.2008 13:42