Как сохранить разные значения выбора для одной и той же переменной - PullRequest
0 голосов
/ 07 января 2010

Можно ли сохранить разные значения выбора для одной и той же переменной?

DECLARE @cout int 

SELECT @cout= count(*) FROM Master1 WHERE (...)

SET @cout = SELECT count(*) FROM Master2 WHERE (...)

SET @cout = SELECT count(*) FROM Master3 WHERE (...)

IF(@cout = 0)
 BEGIN
 END

Ответы [ 3 ]

0 голосов
/ 07 января 2010

Как насчет:

IF EXISTS
(
SELECT 1 FROM Master1 WHERE (...)
UNION ALL
SELECT 1 FROM Master2 WHERE (...)
UNION ALL
SELECT 1 FROM Master3 WHERE (...)
)    
BEGIN
...
END

Это должно сработать, и вытащить достаточно быстро ...

0 голосов
/ 07 января 2010

Вы хотите запустить только если ничего из этого не существует.

Вы можете использовать ключевое слово EXISTS.

Как то так.

IF NOT EXISTS SELECT ID FROM Master1 WHERE (...)
  IF NOT EXISTS SELECT ID FROM Master2 WHERE (...)
    IF NOT EXISTS SELECT ID FROM Master3 WHERE (...)
    BEGIN
      ..do stuff...
    END

Обратите внимание, что я не использую count, если count равен нулю NOT EXISTS, то true. Выберите любой столбец, чтобы запустить запрос.

Не могу сейчас проверить, синтаксис может выглядеть так:

IF NOT EXISTS (SELECT ID FROM Master1 WHERE (...))
  IF NOT EXISTS (SELECT ID FROM Master2 WHERE (...))
    IF NOT EXISTS (SELECT ID FROM Master3 WHERE (...))
    BEGIN
      ..do stuff...
    END
0 голосов
/ 07 января 2010

Нет, то, что у вас есть, заменит значение. Вы можете добавить их как строки или сложить числа. Но это плохая практика; лучше вернуть набор результатов, т.е.:

SELECT
    (select count(*) FROM Master1 WHERE (...)) as 'Foo1',
    (SELECT count(*) FROM Master2 WHERE (...)) as 'Foo2',
    (select count(*) FROM Master3 WHERE (...)) as 'Foo3'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...