powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FULL JOIN
18 сообщений из 43, страница 2 из 2
FULL JOIN
    #39803147
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lomaster_Посетитель,

Это не решит проблемы в первом варианте. А во втором плохо читабельно. Я и спрашиваю есть ли какие механизмы уменьшения кода. Может я чего нибудь не знаю 😀
Есть 3 вида соединения разреженных данных:
1. full join - хорошо работает только для 2 таблиц. Дальше уже нечитабельно и количество coalesce зашкаливает
2. union all + group by - неплохо, но читабельность тоже не на высоте особенно когда таблиц с 10 и больше
3. union ключей + left join-ы.
Выглядит это так:

with all_ids
(
select id from table1
union
select id from table2
....
union
select id from tableN
)
select M.id, t1.*, t2.*, ....
from all_ids M
left join table1 t1 on t1.id = M.id
left join table2 t2 on t2.id = M.id
....
left join tableN tN on tN.id = M.id
----------------------------------------------------

p.s. и заметьте - ни одного coalesce.
p.p.s. когда начинаются более сложные случаи например с соединениями по периодам дат и т.п. - 3-й вариант спасает
...
Рейтинг: 0 / 0
FULL JOIN
    #39803148
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak,

главное что бы выглядело хорошо
...
Рейтинг: 0 / 0
FULL JOIN
    #39803718
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот и изобрели outer join
а мужики в мс то и не не знают

select
...
from t1
outer join t2 on t2.id=t1.id
outer join t3 on t3.id=isnull(t1.id, t2.id)

и вообще про coalese где-то видел негатив
может отключать параллелизм, если не вру
...
Рейтинг: 0 / 0
FULL JOIN
    #39803719
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklim.kznвот и изобрели outer join
а мужики в мс то и не не знают

select
...
from t1
outer join t2 on t2.id=t1.id
outer join t3 on t3.id=isnull(t1.id, t2.id)

и вообще про coalese где-то видел негатив
может отключать параллелизм, если не вру

и шо, работает?
...
Рейтинг: 0 / 0
FULL JOIN
    #39803766
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklim.kznвот и изобрели outer join
а мужики в мс то и не не знают

select
...
from t1
outer join t2 on t2.id=t1.id
outer join t3 on t3.id=isnull(t1.id, t2.id)

и вообще про coalese где-то видел негатив
может отключать параллелизм, если не вру
я же говорил - вам лучше скрипты вообще не писать
...
Рейтинг: 0 / 0
FULL JOIN
    #39803769
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посетительdklim.kznвот и изобрели outer join
а мужики в мс то и не не знают

select
...
from t1
outer join t2 on t2.id=t1.id
outer join t3 on t3.id=isnull(t1.id, t2.id)

и вообще про coalese где-то видел негатив
может отключать параллелизм, если не вру

и шо, работает?

а шо, должно? а зарплата где?
...
Рейтинг: 0 / 0
FULL JOIN
    #39803776
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKdklim.kznвот и изобрели outer join
а мужики в мс то и не не знают

select
...
from t1
outer join t2 on t2.id=t1.id
outer join t3 on t3.id=isnull(t1.id, t2.id)

и вообще про coalese где-то видел негатив
может отключать параллелизм, если не вру
я же говорил - вам лучше скрипты вообще не писать

ага, лучше тут на две страницы всяких космических вязок бессмысленных,
хотя есть предназначенный для таких случаев инструмент))
...
Рейтинг: 0 / 0
FULL JOIN
    #39803780
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklim.kznTaPaKпропущено...

я же говорил - вам лучше скрипты вообще не писать

ага, лучше тут на две страницы всяких космических вязок бессмысленных,
хотя есть предназначенный для таких случаев инструмент))
Тапак, может и тролль, но он фишку рубит, а ты вот просто недостаточно умен, чтобы осознать свой недостаток ума...
...
Рейтинг: 0 / 0
FULL JOIN
    #39803785
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руслан Дамировичdklim.kznпропущено...


ага, лучше тут на две страницы всяких космических вязок бессмысленных,
хотя есть предназначенный для таких случаев инструмент))
Тапак, может и тролль, но он фишку рубит, а ты вот просто недостаточно умен, чтобы осознать свой недостаток ума...

Вы, видимо, что-то сказать хотели, но не смогли
...
Рейтинг: 0 / 0
FULL JOIN
    #39803787
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklim.kznПосетительпропущено...


и шо, работает?

а шо, должно? а зарплата где?

не платят? сочувствую.
...
Рейтинг: 0 / 0
FULL JOIN
    #39803791
dklim.kzn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посетительdklim.kznпропущено...


а шо, должно? а зарплата где?

не платят? сочувствую.

ну думаю хотя бы не в моём объеме сочувствия все рубящим фишку на эти две страницы
...
Рейтинг: 0 / 0
FULL JOIN
    #39803902
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakLomaster_Посетитель,

Это не решит проблемы в первом варианте. А во втором плохо читабельно. Я и спрашиваю есть ли какие механизмы уменьшения кода. Может я чего нибудь не знаю 😀
Есть 3 вида соединения разреженных данных:
1. full join - хорошо работает только для 2 таблиц. Дальше уже нечитабельно и количество coalesce зашкаливает
2. union all + group by - неплохо, но читабельность тоже не на высоте особенно когда таблиц с 10 и больше
3. union ключей + left join-ы.
Есть четвертый вариант - вынести всю запутанную логику из запроса в процедуру, которая формирует результат в виде таблицы или рекордсета. Улучшите читабельность за счет декомпозиции сложного запроса, но, вероятно, проиграете в скорости выполнения.
...
Рейтинг: 0 / 0
FULL JOIN
    #39804639
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.ЕвгенийIvan Durakпропущено...

Есть 3 вида соединения разреженных данных:
1. full join - хорошо работает только для 2 таблиц. Дальше уже нечитабельно и количество coalesce зашкаливает
2. union all + group by - неплохо, но читабельность тоже не на высоте особенно когда таблиц с 10 и больше
3. union ключей + left join-ы.
Есть четвертый вариант - вынести всю запутанную логику из запроса в процедуру, которая формирует результат в виде таблицы или рекордсета. Улучшите читабельность за счет декомпозиции сложного запроса, но, вероятно, проиграете в скорости выполнения.
?????wtf
А в процедуре данные магическим образом соберутся???

Ты точно так же и в процедуре будешь вынужден придумывать как тебе собрать разреженные данные, фулл джойном или юнионом.
или ты CLR процедуру на C# писать собрался?????? )
...
Рейтинг: 0 / 0
FULL JOIN
    #39804989
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lomaster_Здравствуйте.

Нужна помощь, а может и нет 😀.

Пишем на Sql server 2008 отчёты, которые запускаются каждый день. В отчёте требуется объединять несколько таблиц, обычно от 5 до 10. Некоторые берём с другого сервера не MS.
Ситуация, при объединении нескольких таблиц, получается некрасивая картинка. Т.е. если в первой таблице нет каких то данных из второй то я из добавляю через COALESCE, но при последующих соединениях данные не соединяются с данными из второй таблицы и последующими. Я нашел решение только если выделять каждые две соединённые таблицы в отдельный селект. В результате получается кода на 1000 строк, после очень сложно разобраться что к чему.
Может кто то посоветует как можно по другому решить эту проблему.

Спасибо.

Господа великие страдальцы, начните читать книгу "The Data Warehouse Toolkit, Book by Ralph Kimball" и да снизайдет на вас озарение по поводу как это все правильно сделать.
...
Рейтинг: 0 / 0
FULL JOIN
    #39805025
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak.Евгенийпропущено...

Есть четвертый вариант - вынести всю запутанную логику из запроса в процедуру, которая формирует результат в виде таблицы или рекордсета. Улучшите читабельность за счет декомпозиции сложного запроса , но, вероятно, проиграете в скорости выполнения.
?????wtf
А в процедуре данные магическим образом соберутся???

Ты точно так же и в процедуре будешь вынужден придумывать как тебе собрать разреженные данные, фулл джойном или юнионом.
или ты CLR процедуру на C# писать собрался?????? )
Мне кажется, что вы не прочли написанное мной, излишне возбудились и стали додумывать нечто странное. Обратите внимание на выделенную фразу. Вам она понятна или я слишком туманно выразился?

Тогда я приведу намеренно упрощенное применение варианта: на первом шаге соединяются две таблички в результирующую. Далее последняя соединяется с третьей, четвертой и так далее. На каждом шаге заполняется часть полей. Маленькие запросы, никакой многоуровневой вложенности, легко отлаживать и дорабатывать каждый шаг по отдельности. Я доступно объяснил?

P.S. И это не единственное, что можно загнать в процедуру. Я не отвергаю даже экзотики - помянутого вами C# или курсоров (в некоторых случаях результат может оказаться на удивление читабельным).
...
Рейтинг: 0 / 0
FULL JOIN
    #39805051
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не имеет смысла
...
Рейтинг: 0 / 0
FULL JOIN
    #39805054
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.ЕвгенийТогда я приведу намеренно упрощенное применение варианта: на первом шаге соединяются две таблички в результирующую. Далее последняя соединяется с третьей, четвертой и так далее. На каждом шаге заполняется часть полей. Маленькие запросы, никакой многоуровневой вложенности, легко отлаживать и дорабатывать каждый шаг по отдельности. Я доступно объяснил?Вам Ivan Durak вполне доступно объяснил, что процедура - это сохранённый в базе данных код. Который вы можете просто отправить на сервер, не сохраняя в виде процедуры.
...
Рейтинг: 0 / 0
FULL JOIN
    #39805059
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Во-первых, мне показалось (могу ошибаться), что Ivan Durak (как и большинство остальных) говорил про варианты запроса. Одного-единственного запроса от источников до результата. А не про скрипт или процедуру. Именно на это я и обращаю внимание.
Во-вторых, скрипт (или код) без использования процедур ограничивает возможности реиспользования своих фрагментов. Это имеет непосредственное отношение к читабельности запроса, которой озабочен ТС.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FULL JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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