2015-06-17 4 views
0

У меня есть запрос SQL сервера следующим образом в порядке хранения с параметрами @firstId и @secondIdЗаменить следующий запрос в SQLite

IF @firstId = '' 
begin 

SELECT DISTINCT x, y = 
FROM t1 
LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId 
ORDER BY t1.somecolumn 

END 
ELSE 
BEGIN 

SELECT DISTINCT x, y = 
FROM t1 
LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId 
AND t1.id = @firstId 
ORDER BY t1.somecolumn 
END 

Я новичок в SQLite и пытаюсь написать приведенный выше запрос в SQLite с заявлениями о случаях, как это предлагается в документации sqlite, но пока не в состоянии добиться того же. Я хочу достичь чего-то вроде ниже или лучшего запроса.

CASE WHEN @firstId = '' THEN (CHOOSE FIRST SELECT STATEMENT) ELSE (CHOOSE SECOND SELECT STATEMENT) END 

Я подумал о расщеплении оригинального SQL-запроса на два отдельных заявления в SQLite и вызвать соответствующий запрос на основании состояния обрабатываются в C# код базового файла, как показано ниже, но не уверен, что это хорошая практика.

if(firstId == string.empty) 
{ 
//call the first select statement 
} 
else 
{ 
//call the second select statement 
} 

Я не хочу разделить процедуру хранения на два отдельных запроса. Любая помощь приветствуется.

+0

Очевидным ответом является «разделение хранимой процедуры на два отдельных запроса». Почему бы вам не сделать это? –

ответ

2

Вы можете сделать это за один раз. Выше 2 справки эквивалентны следующим образом:

SELECT DISTINCT x, y 
FROM t1 
LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId 
         AND (t1.id = @firstId OR @firstId = '') 
ORDER BY t1.somecolumn 
Смежные вопросы