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

Откуда:
Сообщений: 75
Есть таблица с установленными программами.

host name_prog
--------------------------
wxpcomp1 Microsoft Office
wxpcomp1 AdobeReader
wxpcomp1 Far
wxpcomp2 Microsoft Office
wxpcomp2 Far
wxpcomp3 Microsoft Office
wxpcomp3 AdobeReader
wxpcomp3 Far
wxpcomp4 Microsoft Office
wxpcomp4 Citrix
wxpcomp4 Far
wxpcomp4 TotalComander

В общем нужно вывести список компьютеров, на которых не установлен AdobeReader.
То есть результат должен быть

wxpcomp2
wxpcomp4

Желательно без циклов.
24 фев 12, 07:30    [12144803]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Читать здесь
24 фев 12, 07:40    [12144806]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
zxv
Member

Откуда:
Сообщений: 75
Ken@t
Читать здесь


не нашел я там ответа

Писал чтото подобное

SELECT host
FROM test2
where name_prog not in ('AdobeReader')

вобщем не получается .
24 фев 12, 08:46    [12144862]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
zxv
Member

Откуда:
Сообщений: 75
вроде бы получилось.
SELECT distinct host FROM test2 as t
where 'AdobeReader' <> all (select name_prog from test2 where host=t.host)
24 фев 12, 08:55    [12144879]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
zxv
Member

Откуда:
Сообщений: 75
появилась еще одна проблема, если таблица вот такая
wxpcomp1 Microsoft Office
wxpcomp1 AdobeReader
wxpcomp1 Far
wxpcomp2 Microsoft Office
wxpcomp2 Far
wxpcomp3 Microsoft Office
wxpcomp3 AdobeReader
wxpcomp3 Far
wxpcomp4 Microsoft Office
wxpcomp4 Citrix
wxpcomp4 Far
wxpcomp4 TotalComander
wxpcomp4 null

то результат получается такой (wxpcomp4 почему то не попадает)
wxpcomp2
24 фев 12, 11:26    [12145619]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
iljy
Member

Откуда:
Сообщений: 8711
zxv,

это классика.
select 1
where 2 not in (select 1 union all select 3)

select 1
where 2 not in (select 1 union all select 3 union all select null)
24 фев 12, 11:33    [12145676]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
iap
Member

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

используйте предикат NOT EXISTS.
24 фев 12, 11:39    [12145712]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос. Есть таблица со списком програм.  [new]
zxv
Member

Откуда:
Сообщений: 75
iljy
zxv,

это классика.
select 1
where 2 not in (select 1 union all select 3)

select 1
where 2 not in (select 1 union all select 3 union all select null)

да, действительно классика. Спасибо.
Но я пока учусь с вложенными запросами работать.
24 фев 12, 13:04    [12146247]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить