Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с условием  [new]
zenik
Member

Откуда:
Сообщений: 100
@@version
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86)

Входные данные:
CREATE TABLE #TEST (ID varchar(10), NAME varchar(10), VALUE varchar(20))

INSERT INTO #TEST
SELECT '','SETTINGS1','не выбирать' UNION ALL
SELECT '1','SETTINGS1','выбирать' UNION ALL
SELECT '2','SETTINGS2','не выбирать' UNION ALL
SELECT '','SETTINGS3','выбирать'

DECLARE @ID int
SET @ID = 1
SELECT Name,Value FROM #Test WHERE ID = '' OR ID = @ID
Получаем:
SETTINGS1  не выбирать
SETTINGS1  выбирать
SETTINGS3  выбирать
Нужен результат:
Name       Value
---------- --------------------
SETTINGS1  выбирать
SETTINGS3  выбирать

т.е. При совпадении Name выбирать тот, который совпадает по ID иначе выбирать по ID = ''.
7 окт 09, 13:59    [7753462]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с условием  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
DECLARE @ID int
SET @ID = 1
SELECT Name,Value FROM #Test WHERE ID = '' OR ID = @ID
and VALUE ='выбирать'
7 окт 09, 14:05    [7753517]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с условием  [new]
zenik
Member

Откуда:
Сообщений: 100
Найн...
При совпадении Name выбирать...
Данные приведены абстрактные. Value не имеет никакого отношения к тому выбирать его или нет. Это просто что б визуально понятнее было. Оперировать надо только ID и Name. Задаем ID и для него выбираем все что есть + выбираем те которые без указания ID, но они не должны пересекаться по NAME с теми, которые попали при выборке по ID
7 окт 09, 14:09    [7753552]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с условием  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
zenik
При совпадении Name выбирать тот, который совпадает по ID иначе выбирать по ID = ''.
Кто с кем по ID должен совпадать?
7 окт 09, 14:09    [7753554]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с условием  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
zenik,

SELECT ID,Name,Value FROM #Test WHERE ID = @ID
UNION
SELECT t1.ID,t1.Name,t1.Value FROM #Test t1
LEFT JOIN
(
SELECT Name,Value FROM #Test WHERE ID = @ID
) t2 ON t2.NAME = t1.NAME WHERE t1.ID = '' AND t2.NAME IS NULL
?
7 окт 09, 14:18    [7753610]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с условием  [new]
zenik
Member

Откуда:
Сообщений: 100
Ага, оно. Спасибо!
7 окт 09, 14:23    [7753643]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с условием  [new]
zenik
Member

Откуда:
Сообщений: 100
Сделал проще:
SELECT Name,Value FROM #TEST WHERE ID = @ID
UNION
SELECT Name,Value FROM #TEST WHERE ID = '' AND Name NOT IN (SELECT Name FROM #TEST WHERE ID = @ID)

Но все же спасибо за идею с UNION, как то не догадался ;)
7 окт 09, 14:51    [7753829]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить