Помогите разобратся как работают If ... else if ... else if ... else

VIT2708
Дата: 24.01.2013 15:10:43
Дошел я до проблемы и никак не могу понять как можна ее решить

есть 3 параметра

@type bigint = 0,
@userid bigint = 0,
@clientname varchar(255) = null

В зависимости от выбираемого поля передаются параметры

вот пытаюсь создать конструкцию типа

if @type > 0 and @userid > 0 and @clientname <> null
выполнить select включая три параметра (select * from table where type=@type and userid=@userid and clientname=@clientname)

///////////////////////////если юзер выбрал для фильтрации не 3 поля а например 2 или 1
else if @type > 0 .....
выполнить select

else if.....

всего этих else if получается 8 но они не работают а работает всегда в конце else и никак не пойму почему не отрабатывают else if?

Спасибо.
Konst_One
Дата: 24.01.2013 15:13:23
begin end проставь в каждом блоке и сдвинь табуляцией, сразу всё поймёшь:


if (...)
Begin
	...
End
else 
Begin
	if (...)
	Begin	
		...
	End
End
iap
Дата: 24.01.2013 15:28:07
VIT2708,

это
@clientname <> null
всегда будет всё обламывать
iap
Дата: 24.01.2013 15:29:25
iap
VIT2708,

это
@clientname <> null
всегда будет всё обламывать
ибо IF хочет TRUE, а получает UNKNOWN
VIT2708
Дата: 24.01.2013 15:45:17
iap
iap
VIT2708,

это
@clientname <> null
всегда будет всё обламывать
ибо IF хочет TRUE, а получает UNKNOWN


а как это обойти?
Konst_One
Дата: 24.01.2013 15:48:56
not is null
VIT2708
Дата: 24.01.2013 15:54:10
Konst_One,

Спасибо.
Гость333
Дата: 24.01.2013 15:54:38
VIT2708,

@clientname is not null
Konst_One
Дата: 24.01.2013 16:01:49
not @clientname is null

вот про это я выше уже писал
samoxod
Дата: 24.01.2013 16:08:09
select * from table where (@type = 0 or (@type <> 0 and type=@type)) and 
(@userid = 0 or (@userid <> 0 and userid=@userid)) and 
(@clientname is null or (@clientname is not null and clientname=@clientname))