powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно сделать full join нескольких таблиц
17 сообщений из 17, страница 1 из 1
Как правильно сделать full join нескольких таблиц
    #32064968
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите за ламерский вопрос, но

Есть 3-4 таблицы с одинаковой структурой например
table (id char(9), summa numeric(15,2))

Как правильно сделать full join 3-х таких таблиц,
т.е. в результате я хочу получить таблицу

table (id char(9), summa1, summa2, summa3)

join надо сделать по id
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32064985
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то вроде этого?
Код: plaintext
SELECT t1.id, t1.summa AS summa1, t2.summa AS summa2, t3.summa AS summa3 FROM (t1 INNER JOIN t2 ON t1.id = t2.id) INNER JOIN t3 ON t1.id = t3.id
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32064996
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну 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
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065003
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать "в лоб", но это будет медленно работающий VIEW. Может лучше уточнить постановку задачи? IMHO изменив структуру получим нормальный ответ, совсем без КЕЙЗов (которые я совсем не люблю).
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065004
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я скоро убегаю, поэтому наперед даю совет "на крайний случай": можно будет выбрать ключи одним селектом, к которому (селекту) применить ЛЕФТ ДЖОЙНы с интересующими таблицами... Но это все же плохой вариант, лучше пересмотреть постановку задачи.
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065006
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну например постановка задачи.

Все таблицы временные.

Во временные таблицы запросами
закачиваются данные из 1С77

1-я таблица например -
остатки на начало по 01счету
2-я таблица -
остатки на начало по 02счету
3,4-я таблица -
обороты по дебету, кредиту по 01, 02 счету
Это суммы, т.е. в каждой таблице их на самом деле
несколько.
В 1-ой это сумма, колво
во 2-ой это сумма
в 3-й сумма - дебет, кредит, колво -дебет, кредит.
в 4-й сумма - дебет, кредит.

id - это например Основное средство
на 01 хранится балансовая стоимость
на 02 храниться износ

Задача получить таблицу
где есть все по каждому ОС. Вот и все

Простая оборотно-сальдовая ведомость
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065011
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иэх буду union-ом делать
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065013
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Основные средства имеют ID, вот к этим ID и надо пристраивать таблицы через LEFT JOIN...
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065015
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ввод нового ОС опровергнет твои соображения.
т.е. обороты есть, а остатка увы нет

Нет его на начало.

А обороты слишком малы по сравнению с остатками.

только full join
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065039
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я не вижу, чего это новые ОС тут опровергают!

:)
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065041
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну смотри у нас есть таблица(1) остатки на начало,
плюс таблица(2) обороты по дебету, кредиту.

Т.е. если у нас есть ОС попадающие в (2),
но не попадающие в (1) то
left join их потеряет.

А новаые ОС как раз попадают в (2), но
не попадают в (1).
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065045
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все же я не понял, с какой стати "он их потеряет", если слева использовать все ОС , а справа добавлять (джойнами) таблицы с суммами... ;)
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065047
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну так да можно:)
не рассматривал такой вариант

Но потом колбаситься и удалять
записи с нулевыми суммами.
Иэх некрасиво.

Буду делать через Union
и один full join

скорость не так уж сильно нужна.
И так по сравненю с 1с скорость повысилась
в тысячи раз
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065056
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плюс left join не подходит, т.к
кроме ОС, ключ состоит из МОЛ-ов и субсчета
01. Короче полная лажа
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065065
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но потом колбаситься и удалять
записи с нулевыми суммами.


Нулевая сумма - это твои личные проблемы (с чего бы это ей там вообще появляться-то), а вот NULL вполне можно поотсекать, никаких проблем. :)

кроме ОС, ключ состоит из МОЛ-ов и субсчета 01

А на эту тему я уже несколько раз однозначно высказывался - нефиг иметь супер-пупер-хитрые Primary Keys. Primary Key у меня всюду либо INT, либо GUID, остальное - в альтернейт киз... :)

left join не подходит

Тем не менее, мне нужен был как-то LEFT JOIN по трем колонкам... сделал, прекрасно работало! :) Какие проблемы? ;)
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065076
Фотография TBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сожалею, что не имею возможности далее здесь оставаться... Всем привет!

:)
...
Рейтинг: 0 / 0
Как правильно сделать full join нескольких таблиц
    #32065082
Dionis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а по существу вопроса без всяких отхождений в сторону может кто нибудь сказать (я про full join)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно сделать full join нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]