Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
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-й вариант спасает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 09:00 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, главное что бы выглядело хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 09:02 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
вот и изобрели 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 где-то видел негатив может отключать параллелизм, если не вру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 08:26 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
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 где-то видел негатив может отключать параллелизм, если не вру и шо, работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 08:29 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
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 где-то видел негатив может отключать параллелизм, если не вру я же говорил - вам лучше скрипты вообще не писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:03 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Посетитель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 где-то видел негатив может отключать параллелизм, если не вру и шо, работает? а шо, должно? а зарплата где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:07 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
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 где-то видел негатив может отключать параллелизм, если не вру я же говорил - вам лучше скрипты вообще не писать ага, лучше тут на две страницы всяких космических вязок бессмысленных, хотя есть предназначенный для таких случаев инструмент)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:16 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
dklim.kznTaPaKпропущено... я же говорил - вам лучше скрипты вообще не писать ага, лучше тут на две страницы всяких космических вязок бессмысленных, хотя есть предназначенный для таких случаев инструмент)) Тапак, может и тролль, но он фишку рубит, а ты вот просто недостаточно умен, чтобы осознать свой недостаток ума... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:23 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Руслан Дамировичdklim.kznпропущено... ага, лучше тут на две страницы всяких космических вязок бессмысленных, хотя есть предназначенный для таких случаев инструмент)) Тапак, может и тролль, но он фишку рубит, а ты вот просто недостаточно умен, чтобы осознать свой недостаток ума... Вы, видимо, что-то сказать хотели, но не смогли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:31 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
dklim.kznПосетительпропущено... и шо, работает? а шо, должно? а зарплата где? не платят? сочувствую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:34 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Посетительdklim.kznпропущено... а шо, должно? а зарплата где? не платят? сочувствую. ну думаю хотя бы не в моём объеме сочувствия все рубящим фишку на эти две страницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:37 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Ivan DurakLomaster_Посетитель, Это не решит проблемы в первом варианте. А во втором плохо читабельно. Я и спрашиваю есть ли какие механизмы уменьшения кода. Может я чего нибудь не знаю 😀 Есть 3 вида соединения разреженных данных: 1. full join - хорошо работает только для 2 таблиц. Дальше уже нечитабельно и количество coalesce зашкаливает 2. union all + group by - неплохо, но читабельность тоже не на высоте особенно когда таблиц с 10 и больше 3. union ключей + left join-ы. Есть четвертый вариант - вынести всю запутанную логику из запроса в процедуру, которая формирует результат в виде таблицы или рекордсета. Улучшите читабельность за счет декомпозиции сложного запроса, но, вероятно, проиграете в скорости выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 12:26 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийIvan Durakпропущено... Есть 3 вида соединения разреженных данных: 1. full join - хорошо работает только для 2 таблиц. Дальше уже нечитабельно и количество coalesce зашкаливает 2. union all + group by - неплохо, но читабельность тоже не на высоте особенно когда таблиц с 10 и больше 3. union ключей + left join-ы. Есть четвертый вариант - вынести всю запутанную логику из запроса в процедуру, которая формирует результат в виде таблицы или рекордсета. Улучшите читабельность за счет декомпозиции сложного запроса, но, вероятно, проиграете в скорости выполнения. ?????wtf А в процедуре данные магическим образом соберутся??? Ты точно так же и в процедуре будешь вынужден придумывать как тебе собрать разреженные данные, фулл джойном или юнионом. или ты CLR процедуру на C# писать собрался?????? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 08:30 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Здравствуйте. Нужна помощь, а может и нет 😀. Пишем на Sql server 2008 отчёты, которые запускаются каждый день. В отчёте требуется объединять несколько таблиц, обычно от 5 до 10. Некоторые берём с другого сервера не MS. Ситуация, при объединении нескольких таблиц, получается некрасивая картинка. Т.е. если в первой таблице нет каких то данных из второй то я из добавляю через COALESCE, но при последующих соединениях данные не соединяются с данными из второй таблицы и последующими. Я нашел решение только если выделять каждые две соединённые таблицы в отдельный селект. В результате получается кода на 1000 строк, после очень сложно разобраться что к чему. Может кто то посоветует как можно по другому решить эту проблему. Спасибо. Господа великие страдальцы, начните читать книгу "The Data Warehouse Toolkit, Book by Ralph Kimball" и да снизайдет на вас озарение по поводу как это все правильно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 16:38 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Ivan Durak.Евгенийпропущено... Есть четвертый вариант - вынести всю запутанную логику из запроса в процедуру, которая формирует результат в виде таблицы или рекордсета. Улучшите читабельность за счет декомпозиции сложного запроса , но, вероятно, проиграете в скорости выполнения. ?????wtf А в процедуре данные магическим образом соберутся??? Ты точно так же и в процедуре будешь вынужден придумывать как тебе собрать разреженные данные, фулл джойном или юнионом. или ты CLR процедуру на C# писать собрался?????? ) Мне кажется, что вы не прочли написанное мной, излишне возбудились и стали додумывать нечто странное. Обратите внимание на выделенную фразу. Вам она понятна или я слишком туманно выразился? Тогда я приведу намеренно упрощенное применение варианта: на первом шаге соединяются две таблички в результирующую. Далее последняя соединяется с третьей, четвертой и так далее. На каждом шаге заполняется часть полей. Маленькие запросы, никакой многоуровневой вложенности, легко отлаживать и дорабатывать каждый шаг по отдельности. Я доступно объяснил? P.S. И это не единственное, что можно загнать в процедуру. Я не отвергаю даже экзотики - помянутого вами C# или курсоров (в некоторых случаях результат может оказаться на удивление читабельным). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 17:43 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
.ЕвгенийТогда я приведу намеренно упрощенное применение варианта: на первом шаге соединяются две таблички в результирующую. Далее последняя соединяется с третьей, четвертой и так далее. На каждом шаге заполняется часть полей. Маленькие запросы, никакой многоуровневой вложенности, легко отлаживать и дорабатывать каждый шаг по отдельности. Я доступно объяснил?Вам Ivan Durak вполне доступно объяснил, что процедура - это сохранённый в базе данных код. Который вы можете просто отправить на сервер, не сохраняя в виде процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 19:04 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Во-первых, мне показалось (могу ошибаться), что Ivan Durak (как и большинство остальных) говорил про варианты запроса. Одного-единственного запроса от источников до результата. А не про скрипт или процедуру. Именно на это я и обращаю внимание. Во-вторых, скрипт (или код) без использования процедур ограничивает возможности реиспользования своих фрагментов. Это имеет непосредственное отношение к читабельности запроса, которой озабочен ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 19:39 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1687923]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 454ms |

| 0 / 0 |
