Я не уверен, возможно ли это в базе данных SQL Server?
Скажем, у меня есть таблица:
id INT
nm NVARCHAR(256)
cid INT --references [id]
и гипотетические данные:
id nm cid
1 Name 1 0
2 Name 2 0
3 Name 3 1
4 Name 4 3
5 Name 5 2
6 Name 6 4
7 Name 7 2
И логика для выбора должна быть следующей:
Скажем, у нас есть оригинальный идентификатор, назовем его N.
Тогдау нас есть идентификатор поиска, назовем его X. Затем мы делаем:
SELECT [cid] FROM [TableName] WHERE [id]=X
и проверяем, равен ли результат N. Если да, то мы возвращаем [nm] дляэта запись.Если результат равен 0, то мы возвращаем Null.Если результат - это что-то еще, мы делаем тот же выбор, за исключением того, что X теперь является значением результата.
Я, очевидно, могу сделать это с C #, но мне любопытно, можно ли это обернуть в чистый оператор SQL?
PS.Просто чтобы проиллюстрировать это моей таблицей выше, если N равно 1, а X равно 6, то мы получим:
SELECT [cid] FROM [TableName] WHERE [id]=6 --results is 4 (not N or 0, then continue)
SELECT [cid] FROM [TableName] WHERE [id]=4 --results is 3 (not N or 0, then continue)
SELECT [cid] FROM [TableName] WHERE [id]=3 --results is 1 (is N, then return "Name 1")
или, если N равно 1 и X равно 7, мы получим:
SELECT [cid] FROM [TableName] WHERE [id]=7 --results is 2 (not N or 0, then continue)
SELECT [cid] FROM [TableName] WHERE [id]=2 --results is 0 (is 0, then return Null)
РЕДАКТИРОВАТЬ: Мне нужно это для запуска под SQL Server 2008.