Имя: Пароль:
1C
1С v8
v8: Вычитание таблиц по двум ключевым полям
0 geka-geka
 
29.08.12
10:30
Хочу выбрать записи из таблицы СдельныйНарядИсполнители, которых нет в таблице ВТ_НаПроверку. Ключем является пара (Наряд,Сотрудник)
Делаю так, но кажется неправильным. Как правильно это сделать?

ВЫБРАТЬ
   СдельныйНарядИсполнители.Ссылка КАК Ссылка,
   СдельныйНарядИсполнители.Сотрудник КАК Сотрудник,
   СдельныйНарядИсполнители.СуммаКНачислениюРегл
ИЗ
   ВТ_НаПроверку КАК ВТ_НаПроверку,
   Документ.СдельныйНаряд.Исполнители КАК СдельныйНарядИсполнители
ГДЕ
   НЕ(СдельныйНарядИсполнители.Ссылка = ВТ_НаПроверку.Наряд
           И СдельныйНарядИсполнители.Сотрудник = ВТ_НаПроверку.Сотрудник)
1 Classic
 
29.08.12
10:34
ВЫБРАТЬ
   СдельныйНарядИсполнители.Ссылка КАК Ссылка,
   СдельныйНарядИсполнители.Сотрудник КАК Сотрудник,
   СдельныйНарядИсполнители.СуммаКНачислениюРегл
ИЗ
   Документ.СдельныйНаряд.Исполнители КАК СдельныйНарядИсполнители
   ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НаПроверку КАК ВТ_НаПроверку
   ПО СдельныйНарядИсполнители.Ссылка = ВТ_НаПроверку.Наряд
           И СдельныйНарядИсполнители.Сотрудник = ВТ_НаПроверку.Сотрудник

ГДЕ ВТ_НаПроверку.Сотрудник Есть NULL
  СдельныйНарядИсполнители.Сотрудник Есть NULL
2 Classic
 
29.08.12
10:35
Последнюю строку не надо
3 geka-geka
 
29.08.12
10:42
ВЫБРАТЬ
   СдельныйНарядИсполнители.Ссылка КАК Ссылка,
   СдельныйНарядИсполнители.Сотрудник КАК Сотрудник,
   СдельныйНарядИсполнители.СуммаКНачислениюРегл
ИЗ
   Документ.СдельныйНаряд.Исполнители КАК СдельныйНарядИсполнители
   ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НаПроверку КАК ВТ_НаПроверку
   ПО СдельныйНарядИсполнители.Ссылка = ВТ_НаПроверку.Наряд
           И СдельныйНарядИсполнители.Сотрудник = ВТ_НаПроверку.Сотрудник

выдает записи, которые есть и там и там
4 acsent
 
29.08.12
10:44
(3) значит таблицы одинаковы
5 geka-geka
 
29.08.12
10:47
вообще разные, но есть пересечение
6 geka-geka
 
29.08.12
10:47
(3) как раз и выдает пересечение
7 Classic
 
29.08.12
10:48
(3)
Я в (1) написал "Последнюю строку не надо", а не "две последних не надо"
8 geka-geka
 
29.08.12
10:51
Вот так получилось:

ВЫБРАТЬ
   СдельныйНарядИсполнители.Ссылка КАК Ссылка,
   СдельныйНарядИсполнители.Сотрудник КАК Сотрудник,
   СдельныйНарядИсполнители.СуммаКНачислениюРегл
ИЗ
   (ВЫБРАТЬ
       ВТ_НаПроверку.Сотрудник КАК Сотрудник,
       ВТ_НаПроверку.Наряд КАК Наряд
   ИЗ
       ВТ_НаПроверку КАК ВТ_НаПроверку) КАК ВложенныйЗапрос,
   Документ.СдельныйНаряд.Исполнители КАК СдельныйНарядИсполнители
ГДЕ
   НЕ(СдельныйНарядИсполнители.Ссылка = ВложенныйЗапрос.Наряд
               И СдельныйНарядИсполнители.Сотрудник = ВложенныйЗапрос.Сотрудник)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.