Имя: Пароль:
1C
1С v8
Связь таблиц в запросе
0 thomY100
 
18.11.11
16:02
Привет есть такой вопрос, есть 2 таблицы, в них есть поле для связи(в моем случае договор), нужно выбрать из 1-й таблицы строки которых нет во второй(т.е во 2-й нет строк с таким договором), делаю связь по этому полю <>,  но при этом данные задваиваются, подскажите пожалуйста, как правильно описать связь?
1 Рэйв
 
18.11.11
16:06
Выбрать Подзапрос.Дог1  Из(
Выбрать
  Таб1.Дог КАК Дог1,  
  Таб2.Дог КАК Дог2
Из Таб1
Левое Соединеие Таб2 По Таб1.Дог=Таб2.Дог )КАК Подзапрос

Где Подзапрос.Дог2 Есть NULL
2 dimaldinho
 
18.11.11
16:07
можно без вложенного запроса
3 Рэйв
 
18.11.11
16:07
можно
4 Рэйв
 
18.11.11
16:07
это для наглядности
5 thomY100
 
18.11.11
16:10
Спасибо, а как без вложенного?
6 dimaldinho
 
18.11.11
16:11
условие где сразу после соединения
7 thomY100
 
18.11.11
16:18
ок, спасибо
8 ilchukav
 
18.11.11
17:01
1С не рекомендует делать связь по вложенному подзапросу.
Для этих целей используют временную таблицу. В вашем случае вначале выбирают договора которые не нужны, сохраняют их во временную таблицу, затем во втором запросе выбирают все за исключением. Пакет выглядит приблизительно так:

Выбрать дог ПОМЕСТИТЬ договораИскл из Договора где ... ;
Выбрать * ИЗ Большая таблица где не (дог в(ВЫБРАТЬ дог из договораИскл))