|
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
|
Вот так получилось:
ВЫБРАТЬ
СдельныйНарядИсполнители.Ссылка КАК Ссылка,
СдельныйНарядИсполнители.Сотрудник КАК Сотрудник,
СдельныйНарядИсполнители.СуммаКНачислениюРегл
ИЗ
(ВЫБРАТЬ
ВТ_НаПроверку.Сотрудник КАК Сотрудник,
ВТ_НаПроверку.Наряд КАК Наряд
ИЗ
ВТ_НаПроверку КАК ВТ_НаПроверку) КАК ВложенныйЗапрос,
Документ.СдельныйНаряд.Исполнители КАК СдельныйНарядИсполнители
ГДЕ
НЕ(СдельныйНарядИсполнители.Ссылка = ВложенныйЗапрос.Наряд
И СдельныйНарядИсполнители.Сотрудник = ВложенныйЗапрос.Сотрудник)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший