Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разветвленные условия в SELECT-е / 2 сообщений из 2, страница 1 из 1
30.11.2002, 22:48:38
    #32074395
ao1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разветвленные условия в SELECT-е
Добрый вечер!
вот какой вопрос

конструкция типа

SELECT PATIENTS.NAME,
CASE PATIENTS.SEX
WHEN 0 THEN 'баба'
WHEN 1 THEN 'мужик'
END

и т.д. легко пишется внутри селекта

теперь предположим ,что я хочу получить такой результат

SELECT PATIENTS.*
FROM PATIENTS WHERE ,
CASE PATIENTS.SEX
WHEN 1 THEN PATIENTS.PRIZIVNIK=TRUE
WHEN 0 THEN PATIENTS.ROZHALA_DETEI>2
END,

я конечно могу записать

SELECT PATIENTS.*
FROM PATIENTS WHERE
(PATIENTS.SEX=1 OR PATIENTS.ROZHALA_DETEI>2) AND
(PATIENTS.PRIZIVNIK=TRUE OR PATIENTS.SEX=0)

но насколько все это будет быстро работать на большой базе,
есть ли кострукция ,которая позволяет писать разветвленные условия
более элегантно?
спасибо за внимание
...
Рейтинг: 0 / 0
01.12.2002, 02:36:11
    #32074408
SandalTree
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разветвленные условия в SELECT-е
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT CASE
	WHEN SEX =  1  OR ROZHALA_DETEI> 2  
		THEN 'Мать Героиня'
	WHEN SEX =  0  OR PRIZIVNIK=TRUE 
		THEN 'Пушечное мясо'
	ELSE 'Пришелец из космоса'
	END
FROM PATIENTS 

Судя по названиям полей, не всё в порядке в структуре базы, но надеюсь вы и сами это знаете.
Мне эта конструкция жутко не нравится, но она работает, и достаточно быстро на больших обьёмах.

P.S. Почти невероятно встретить ситуацию когда
Код: plaintext
(SEX =  0  AND ROZHALA_DETEI> 2 ) = TRUE
но вот ситуация с
Код: plaintext
(SEX =  1  AND PRIZIVNIK=TRUE) = TRUE

вполне возможна. Как вы в таких случаях поступать будете?

P.P.S. Сорри за занудство, но по моему мнению было-бы лучше сделать: 0 - Женщина, 1 - Мужчина, как-бы логичнее... :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разветвленные условия в SELECT-е / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]