|
Связь таблиц в запросе
| ☑ |
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С не рекомендует делать связь по вложенному подзапросу.
Для этих целей используют временную таблицу. В вашем случае вначале выбирают договора которые не нужны, сохраняют их во временную таблицу, затем во втором запросе выбирают все за исключением. Пакет выглядит приблизительно так:
Выбрать дог ПОМЕСТИТЬ договораИскл из Договора где ... ;
Выбрать * ИЗ Большая таблица где не (дог в(ВЫБРАТЬ дог из договораИскл))
|
|