|
Запрос. Соединение 4-х таблиц. |
☑ |
0
abda123
01.02.16
✎
13:18
|
В запросе есть 4 таблицы, всех таблицах по 2 поля:
1. Номенклатура
2. Значение ресурса из регистра накопления. Для каждой таблицы свой регистр.
Как в запросе соединить 4 таблицы так чтобы в результат попали записи из всех таблиц. Что то я туплю, обычно соединял 2 таблицы полным соединением и для нулл полей использовал функцию естьнулл. А как это сделать для 4-х сразу не могу понять.
|
|
1
Рэйв
01.02.16
✎
13:20
|
точно также
Таб1
Полное соединение Таб2
По Таб1.Номенклатура=Таб2.Номенклатура
Полное соединение Таб3
По Таб1.Номенклатура=Таб3.Номенклатура
Полное соединение Таб4
По Таб1.Номенклатура=Таб4.Номенклатура
|
|
2
Encode
01.02.16
✎
13:21
|
(0) Объединением например
|
|
3
abda123
01.02.16
✎
13:23
|
(1) Да, действительно. Точно также полным соединением таб1 со остальными по полю номенклатура. Просто ЕстьНулл будет проверять значение из всех 4-х таблиц для поля номенклатуры. Вопрос закрыт. Не сочтите за флуд)
|
|
4
rs_trade
01.02.16
✎
13:31
|
(3) каждое следующее соединение работает с результатом предыдущего.
|
|
5
abda123
01.02.16
✎
13:40
|
(4) В смысле, в соединении же указывается 2 таблицы, как оно берет предыдущий результат? Логичней по моему, что оно соединяет 2 таблицы указанные в соединении, а потом берет результаты всех 3-х соединений и объединяет, или если не так то можно поподробней плиз.
|
|
6
Мимохожий Однако
01.02.16
✎
13:44
|
Добавь левой таблицей Номенклатуру, а остальные справа.
|
|
7
Мимохожий Однако
01.02.16
✎
13:45
|
Как вариант сформировать 4 временные таблицы, потом их объединить с разными колонками и сгруппировать
|
|
8
abda123
01.02.16
✎
13:47
|
(7) У меня и есть 4 временные таблицы. Т.е. объединение предпочтительней соединения, интересно мне)
|
|
9
abda123
01.02.16
✎
13:55
|
(3) каждое следующее соединение работает с результатом предыдущего. Пояснение в студию! И что предпочтительней для 4-х таблиц, объединение или соединение?
|
|
10
hhhh
01.02.16
✎
14:01
|
(9) ну допустим у вас в каждой таблице по 1000 строк. Тогда при соединении у вас будет 1000*1000*1000 = миллиард сравнений.
При соединении всё-таки сравнений меньше. Особенно если проиндексируете таблицы по номенклатуре.
|
|
11
hhhh
01.02.16
✎
14:02
|
(10)+ при объединении меньше
|
|
12
Мимохожий Однако
01.02.16
✎
14:05
|
Сделай замеры и определишься какой запрос лучше
|
|
13
abda123
01.02.16
✎
15:34
|
(12) Сделал замеры, запрос выполняется быстрее через объединение. Сделал несколько замеров, в среднем в полтора раза быстрее.
|
|
14
СвинТуз
01.02.16
✎
15:53
|
union all
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший