|
|
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Простите за ламерский вопрос, но Есть 3-4 таблицы с одинаковой структурой например table (id char(9), summa numeric(15,2)) Как правильно сделать full join 3-х таких таблиц, т.е. в результате я хочу получить таблицу table (id char(9), summa1, summa2, summa3) join надо сделать по id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 14:36:51 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Что-то вроде этого? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:09:22 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
ну inner join то все понятно но состав id в каждой таблице разный просто когда я соединял три таблицы по full join то я делал примерно так select case when it1.id is null then case when it2.id is null then it3.id else it2.id end else it1.id end id, it1.summa, it2.summa, it3.summa from table1 it1 full join table it2 on (it1.id = it2.id) full join table it3 on (it1.id = it3.id) and (it2.id = it3.id) все работало. Но я немного не понял логику построения да и с ужасом думаю: 1) как обобщить на 4ре таблицы. (но это дело техники) 2) кроме id надо еще по двум параметрам ну например id1, id2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:23:38 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Можно сделать "в лоб", но это будет медленно работающий VIEW. Может лучше уточнить постановку задачи? IMHO изменив структуру получим нормальный ответ, совсем без КЕЙЗов (которые я совсем не люблю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:35:35 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Я скоро убегаю, поэтому наперед даю совет "на крайний случай": можно будет выбрать ключи одним селектом, к которому (селекту) применить ЛЕФТ ДЖОЙНы с интересующими таблицами... Но это все же плохой вариант, лучше пересмотреть постановку задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:38:59 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
ну например постановка задачи. Все таблицы временные. Во временные таблицы запросами закачиваются данные из 1С77 1-я таблица например - остатки на начало по 01счету 2-я таблица - остатки на начало по 02счету 3,4-я таблица - обороты по дебету, кредиту по 01, 02 счету Это суммы, т.е. в каждой таблице их на самом деле несколько. В 1-ой это сумма, колво во 2-ой это сумма в 3-й сумма - дебет, кредит, колво -дебет, кредит. в 4-й сумма - дебет, кредит. id - это например Основное средство на 01 хранится балансовая стоимость на 02 храниться износ Задача получить таблицу где есть все по каждому ОС. Вот и все Простая оборотно-сальдовая ведомость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:46:37 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Иэх буду union-ом делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:53:05 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Основные средства имеют ID, вот к этим ID и надо пристраивать таблицы через LEFT JOIN... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:54:08 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
ввод нового ОС опровергнет твои соображения. т.е. обороты есть, а остатка увы нет Нет его на начало. А обороты слишком малы по сравнению с остатками. только full join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 15:56:53 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
А я не вижу, чего это новые ОС тут опровергают! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 17:15:02 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
ну смотри у нас есть таблица(1) остатки на начало, плюс таблица(2) обороты по дебету, кредиту. Т.е. если у нас есть ОС попадающие в (2), но не попадающие в (1) то left join их потеряет. А новаые ОС как раз попадают в (2), но не попадают в (1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 17:20:41 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
И все же я не понял, с какой стати "он их потеряет", если слева использовать все ОС , а справа добавлять (джойнами) таблицы с суммами... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 17:23:43 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
ну так да можно:) не рассматривал такой вариант Но потом колбаситься и удалять записи с нулевыми суммами. Иэх некрасиво. Буду делать через Union и один full join скорость не так уж сильно нужна. И так по сравненю с 1с скорость повысилась в тысячи раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 17:26:56 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Плюс left join не подходит, т.к кроме ОС, ключ состоит из МОЛ-ов и субсчета 01. Короче полная лажа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 17:38:12 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Но потом колбаситься и удалять записи с нулевыми суммами. Нулевая сумма - это твои личные проблемы (с чего бы это ей там вообще появляться-то), а вот NULL вполне можно поотсекать, никаких проблем. :) кроме ОС, ключ состоит из МОЛ-ов и субсчета 01 А на эту тему я уже несколько раз однозначно высказывался - нефиг иметь супер-пупер-хитрые Primary Keys. Primary Key у меня всюду либо INT, либо GUID, остальное - в альтернейт киз... :) left join не подходит Тем не менее, мне нужен был как-то LEFT JOIN по трем колонкам... сделал, прекрасно работало! :) Какие проблемы? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 17:50:49 |
|
||
|
Как правильно сделать full join нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Сожалею, что не имею возможности далее здесь оставаться... Всем привет! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2002, 18:05:19 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3383&tid=1819058]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 359ms |

| 0 / 0 |
