|
Соединение таблиц в запросе |
☑ |
0
prishliemail
07.11.13
✎
14:05
|
Добрый день! :)
Подскажите пожалуйста по запросам.
У нас есть 2 таблицы, - Таблица1 и Таблица2. Если значение Таблица1.Реквизит1 = Истина, тогда Соединить Таблицу1 и Таблицу2 по Таблица1.Ссылка= Таблица2.Поле1.
Если же зщначение Таблица1.Реквизит1 = Ложь, то Соединить Таблицу1 и Таблицу2 по Таблица1.Ссылка= Таблица2.Поле2.
Подскажите, как написать условие для выбора связи?
Заранее спасибо :)
|
|
1
MSII
07.11.13
✎
14:08
|
(Таблица1.Реквизит1 И НужноеУсловиеСоединения1) ИЛИ (НЕ Таблица1.Реквизит1 И НужноеУсловиеСоединения2)
|
|
2
catena
07.11.13
✎
14:09
|
соединение...
по
(Таблица1.Реквизит1 = Истина и Таблица1.Ссылка= Таблица2.Поле1)
или
(Таблица1.Реквизит1 = Ложь и Таблица1.Ссылка= Таблица2.Поле2)
|
|
3
tan76
07.11.13
✎
14:12
|
ВЫБРАТЬ
Таблица1.Реквизит1,
Таблица1.Ссылка,
Таблица2.Поле1,
Таблица2.Поле2
ИЗ
Таблица1 КАК Таблица1
ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
ПО (ВЫБОР
КОГДА Таблица1.Реквизит1
ТОГДА Таблица1.Ссылка = Таблица2.Поле1
ИНАЧЕ Таблица1.Ссылка = Таблица2.Поле2
КОНЕЦ)
|
|
4
GANR
07.11.13
✎
14:18
|
(0) А чтобы соединение использовало индексы (если таковые имеются) 1С рекомендует делать не через ИЛИ, а вот так:
ВЫБРАТЬ
Таблица1.Поле1,
Таблица1.Поле5,
Таблица2.Поле6
ИЗ
Таблица1 КАК Таблица1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
ПО Таблица1.Поле2 = Таблица2.Поле2
ГДЕ
Таблица1.Поле1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Таблица1.Поле1,
Таблица1.Поле5,
Таблица2.Поле6
ИЗ
Таблица1 КАК Таблица1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
ПО Таблица1.Поле3 = Таблица2.Поле3
ГДЕ
НЕ Таблица1.Поле1
|
|
5
prishliemail
07.11.13
✎
17:52
|
Всем большое спасибо!
(3) сделала как Вы посоветовали
|
|