Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проверка идентичности данных в двух запросах  [new]
Guest 19
Guest
добрый день.
коллеги, может подскажет кто как осуществить одним запросом следующее:
существует некая справочная таблица с атрибутами rec_date, course_id, group_id.
rec_date - дата, на которую внесены записи в справочник.
course_id - идентификатор курса.
group_id - идентификатор группы.

group_id - обязательно указан, может быть одинаковым для нескольких записей, в том числе и на одну дату.
course_id - обязательно указан, уникален в рамках одной даты. т.е. не может быть двух записей на одну дату даже с разными group_id.

также существует рабочая таблица, в которой кроме прочих атрибутов присутствуют и вышеописанные три. в этой рабочей таблице количество записей на одну дату для одного group_id может отличаться от эталонного в меньшую сторону. т.е. запись с неким course_id для определенного group_id на запрошенную дату в рабочей таблице может отсутствовать.

нужно выбрать из рабочей таблицы те группы, состав которых на указанную дату полностью совпадает с эталонной таблицей на ту же дату.

спасибо
20 янв 14, 11:11    [15439195]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2428
Guest 19,

exists
20 янв 14, 11:34    [15439337]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
INTERSECT
20 янв 14, 11:41    [15439385]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3451
Не, господа, тут чуть сложнее. Мне кажется, ТСу нужно реляционное деление.

Guest 19,
Хотите запрос - приводите тестовые данные в виде скриптов.
20 янв 14, 11:54    [15439509]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Guest 19
Guest
почитал про exists и про intersect.

поправьте меня если я ошибаюсь. в обоих случаях надо указывать связывающие атрибуты.
если я укажу что связывать записи по REc_date, course_id и group_id - он отберет часть совпадающих в обеих таблицах записей. но состав групп ведь при этом никак не проверяется? т.е. если в рабочей таблице на сегодняшнюю дату для группы 5 не будет хватать записи с идентификатором 1005, эта группа тем не менее все равно попадет в выборку так как остальные записи будут совпадать с эталонной. правильно? а нужно выбрать только те группы состав которых полностью совпадает с эталонным. т.е. если какая-то из записей отсутствует в рабочей таблице и присутствует в эталонной - эта группа отбираться не должна.
20 янв 14, 11:56    [15439525]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Guest 19
если я укажу что связывать записи по REc_date, course_id и group_id - он отберет часть совпадающих в обеих таблицах записей. но состав групп ведь при этом никак не проверяется?

Вы же написали, что "в этой рабочей таблице количество записей на одну дату для одного group_id может отличаться от эталонного в меньшую сторону. "
Т.е. в рабочей таблице всегда будет не хватать (not exists) каких то записей.
20 янв 14, 11:59    [15439557]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Guest 19
Guest
я написал "МОЖЕТ" отличаться от эталонной в меньшую сторону. то есть может отличаться, а может и не отличаться. не факт что в рабочей всегда будет не хватать каких-то записей по группе на конкретную дату. выборки могут и совпадать.
20 янв 14, 12:03    [15439600]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Guest 19
Guest
2 Ennor Tiegael

вы имеете в виду скрипт на добавление записей в таблицу в виде insert'ов? или в каком то другом виде?
20 янв 14, 12:07    [15439646]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Guest 19
я написал "МОЖЕТ" отличаться от эталонной в меньшую сторону. то есть может отличаться, а может и не отличаться.

Ну так меньше или равно - это же не больше
20 янв 14, 12:10    [15439677]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Guest 19
Guest
2 Glory,

если честно, не совсем понимаю мысль, на которую вы меня пытаетесь натолкнуть (
может не совсем внятно объяснил, повторю еще раз.
нужно из рабочей таблицы отобрать группы, которые на указанную дату полностью совпадают по составу с группой из эталонной таблицы. при этом, следует учитывать, что в рабочей таблице на конкретную дату и конкретную группу, записей может быть меньше чем в эталонной. соответственно такая группа в выборку попадать не должна. если же состав записей по группе на дату совпадает и в эталонной и в рабочей то это как раз то что нужно.
20 янв 14, 12:21    [15439809]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Guest 19
если честно, не совсем понимаю мысль, на которую вы меня пытаетесь натолкнуть (
может не совсем внятно объяснил, повторю еще раз.

Я тоже повторю.
Если в одной таблице записей НЕ больше, чем в другой, то проверить разницу можно с помощью NOT EXISTS.
20 янв 14, 12:24    [15439844]     Ответить | Цитировать Сообщить модератору
 Re: проверка идентичности данных в двух запросах  [new]
Guest 19
Guest
ага, то есть получаем группы для которых нет записей в эталонной, а дальше выбираем все группы кроме ранее отобранных? отлично! спасибо большое )
20 янв 14, 12:33    [15439934]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить