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

Откуда: Винница
Сообщений: 137
Есть селект
select mf.[media_set_id], mf.[physical_device_name] from [msdb].[dbo].[backupmediafamily] mf, [msdb].[dbo].[backupset] bs
where mf.media_set_id=bs.media_set_id and bs.backup_set_id not in (select backup_set_id from [msdb].[dbo].[restorehistory]) 
как мне обойтись без оператора not in, каким оператором его заменить?!
22 сен 09, 12:55    [7691940]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Зачем его чем-то заменять, чем not in не устраивает?
22 сен 09, 12:58    [7691958]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
знаю что надо использовать оператор FULL JOIN...
22 сен 09, 12:59    [7691965]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
left join , not exists, except - выберайте что больше нравиться
-------------------------------------
Jedem Das Seine
22 сен 09, 13:02    [7691984]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]

Guest
Maxx
left join , not exists, except - выберайте что больше нравиться
-------------------------------------
Jedem Das Seine

всё равно план должен быть одинаковым :)
22 сен 09, 14:22    [7692631]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Maxx
left join
выбрал это....но не могу реализовать, помоги оч надо!!!
22 сен 09, 14:36    [7692738]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
vino
Member

Откуда:
Сообщений: 1191
85sergu, с join как то так
select mf.[media_set_id], mf.[physical_device_name] from [msdb].[dbo].[backupmediafamily] mf
INNER JOIN [msdb].[dbo].[backupset] bs ON mf.media_set_id=bs.media_set_id
LEFT JOIN (select backup_set_id from [msdb].[dbo].[restorehistory]) RH ON bs.backup_set_id = RH.backup_set_id
where RH.backup_set_id IS NULL
22 сен 09, 14:45    [7692824]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Работа с множествами в Transact-SQL
22 сен 09, 17:49    [7694493]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Есть рабочий селект...
SELECT mf.[media_set_id], mf.[physical_device_name] FROM [msdb].[dbo].[backupmediafamily] mf
INNER JOIN [msdb].[dbo].[backupset] bs ON mf.media_set_id=bs.media_set_id 
LEFT JOIN [msdb].[dbo].[restorehistory] rh ON bs.backup_set_id = rh.backup_set_id 
where rh.backup_set_id IS NULL
и есть таблица
select media_set_id from [tempdb].[dbo].[TempLastBackUpBefore]
как найти разницу между двумя селектами?!
24 сен 09, 11:18    [7701813]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Что Вы под разницей подразумеваете?
Разница в количестве полей, выводимых в результате запроса?
Или разница в количестве записей, выводимых в результате запроса?
Или еще какая-нибудь разница?
24 сен 09, 11:23    [7701864]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
SELECT mf.[media_set_id], mf.[physical_device_name] FROM [msdb].[dbo].[backupmediafamily] mf
INNER JOIN [msdb].[dbo].[backupset] bs ON mf.media_set_id=bs.media_set_id 
LEFT JOIN [msdb].[dbo].[restorehistory] rh ON bs.backup_set_id = rh.backup_set_id 
where rh.backup_set_id IS NULL

select media_set_id, [physical_device_name] from [tempdb].[dbo].[TempLastBackUpBefore]

вывести поле physical_device_name, в котором media_set_id(в первом селекте) не равен media_set_id (в другом)
24 сен 09, 11:31    [7701922]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
85sergu
в котором media_set_id(в первом селекте) не равен media_set_id (в другом)
Так ведь хх же "в другом" может быть много...
Не равен какому конкретно?
Не равен первому попавшемуся ?
Не равен ни одному ?
Или еще какому-то?
24 сен 09, 11:35    [7701947]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
85sergu
Member

Откуда: Винница
Сообщений: 137
Паганель,
скажем так в первом селекте результат такой
162 D:\BackUp\master\master_backup_200908311056.bak
163 D:\BackUp\model\model_backup_200908311056.bak
164 D:\BackUp\msdb\msdb_backup_200908311056.bak
174 D:\BackUp\master\master_backup_200909011546.bak
а во втором
162 D:\BackUp\master\master_backup_200908311056.bak
163 D:\BackUp\model\model_backup_200908311056.bak
164 D:\BackUp\msdb\msdb_backup_200908311056.bak
мне нужно найти разницу по полю media_set_id, и вывести поле physical_device_name
174 D:\BackUp\master\master_backup_200909011546.bak
24 сен 09, 11:44    [7702013]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
SELECT mf.[media_set_id], mf.[physical_device_name] FROM [msdb].[dbo].[backupmediafamily] mf
INNER JOIN [msdb].[dbo].[backupset] bs ON mf.media_set_id=bs.media_set_id 
LEFT JOIN [msdb].[dbo].[restorehistory] rh ON bs.backup_set_id = rh.backup_set_id 
where rh.backup_set_id IS NULL
  and mf.[media_set_id] not in (select media_set_id from [tempdb].[dbo].[TempLastBackUpBefore])
PS не проверял
24 сен 09, 11:47    [7702037]     Ответить | Цитировать Сообщить модератору
 Re: Селект который сравнивает 3 таблицы без использования NOT IN  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
85sergu,

А ничего, что Вы хотите искать разницу путей для бэкапов разных бд?!
24 сен 09, 11:47    [7702039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить