Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Нужна помощь, а может и нет 😀. Пишем на Sql server 2008 отчёты, которые запускаются каждый день. В отчёте требуется объединять несколько таблиц, обычно от 5 до 10. Некоторые берём с другого сервера не MS. Ситуация, при объединении нескольких таблиц, получается некрасивая картинка. Т.е. если в первой таблице нет каких то данных из второй то я из добавляю через COALESCE, но при последующих соединениях данные не соединяются с данными из второй таблицы и последующими. Я нашел решение только если выделять каждые две соединённые таблицы в отдельный селект. В результате получается кода на 1000 строк, после очень сложно разобраться что к чему. Может кто то посоветует как можно по другому решить эту проблему. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 13:24 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_, складывайте все однородные данные в одну таблицу суррогатные ключи ОЛАП и вот это вот всё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 13:29 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Пример: Select coalesce(id, t2.id, t3.id ), c1, c2, t2.c3, t2.c4, t3.c5, t3.c6 from t1 Full join (select id, c3, c4 from t2) as t2 Full join (select id, c5, c6 from t3) as t3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 13:29 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Пример: Select coalesce(id, t2.id, t3.id ), c1, c2, t2.c3, t2.c4, t3.c5, t3.c6 from t1 Full join (select id, c3, c4 from t2) as t2 Full join (select id, c5, c6 from t3) as t3 с такими джоинами, чем вас UNION не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 13:30 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Пример: Select coalesce(id, t2.id, t3.id ), c1, c2, t2.c3, t2.c4, t3.c5, t3.c6 from t1 Full join (select id, c3, c4 from t2) as t2 Full join (select id, c5, c6 from t3) as t3 это какой то кросс джоин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 13:33 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
В FULL JOIN обязательно должно быть условие ON. Показанный SELECT неработоспособен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 13:54 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Просто пишу с телефона. Поэтому не дописал селект думал понятно что во всех id должен быть одинаковый. А разве union не присоединение снизу? Потому что мне надо после с этими данными производить математические вычисления типа с1 / с3 * 100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:16 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Просто пишу с телефона. Поэтому не дописал селект думал понятно что во всех id должен быть одинаковый. так у вас проблема то скорее всего именно в той части, которую вы не написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:21 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Поэтому не дописал селект думал понятно что во всех id должен быть одинаковый. Все поля должны иметь один тип, размер, и порядок. При соединении нескольких разносортных, по разному обслуживаемых баз, обязательно через некоторое время вылезет несоответствие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:26 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Просто пишу с телефона. Поэтому не дописал селект думал понятно что во всех id должен быть одинаковый. А разве union не присоединение снизу? Потому что мне надо после с этими данными производить математические вычисления типа с1 / с3 * 100 как у вас найдётся время, опишите что не так, а мы пока погадаем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:28 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
TaPaKа мы пока погадаем ну если включен режим гаданий, то ставлю на то, что у него Код: sql 1. 2. 3. 4. 5. это объяснило бы Lomaster_но при последующих соединениях данные не соединяются с данными из второй таблицы и последующими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:32 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Select coalesce(id, t2.id, t3.id ), c1, c2, t2.c3, t2.c4, t3.c5, t3.c6 from t1 Ни разу не пользовался coalesce в таком режиме, но правильно я понимаю, что если t1.id - пустой, то берется первый id из t2, а если и он пустой, то первый id из t3 ... Странно всё это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:38 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
982183что если t1.id - пустой, то берется первый id из t2, а если и он пустой, то первый id из t3 Нет никаких "первых ID" coalesce не берет, это функция работает не с наборами данных а со значениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:42 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Наверное не очень хороший пример был. Код: sql 1. 2. 3. 4. 5. 6. Вот тут если данные есть во второй и третьей таблицах а в первой нет, то они будут как отдельные строки. А так нет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Тут только 3 таблицы а если их 10... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:49 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Наверное не очень хороший пример был. Код: sql 1. 2. 3. 4. 5. 6. Вот тут если данные есть во второй и третьей таблицах а в первой нет, то они будут как отдельные строки. А так нет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Тут только 3 таблицы а если их 10... ну так добавляйте coalesce в условия соединения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:49 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_, авторВот тут если данные есть во второй и третьей таблицах а в первой нет, то они будут как отдельные строки. а по каким условиям связаны t2 и t3? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 14:53 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Посетитель, Это не решит проблемы в первом варианте. А во втором плохо читабельно. Я и спрашиваю есть ли какие механизмы уменьшения кода. Может я чего нибудь не знаю 😀 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:02 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
TaPaK, У всех трёх есть одинаковые поля id1 id2 id3 но разные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:06 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_Посетитель, Это не решит проблемы в первом варианте. А во втором плохо читабельно. Я и спрашиваю есть ли какие механизмы уменьшения кода. Может я чего нибудь не знаю 😀 вам просто лень проверять. Код: sql 1. 2. 3. 4. 5. 6. Зы. не люблю почему-то, когда поля присоединяемой таблицы указывают справа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:06 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Lomaster_TaPaK, У всех трёх есть одинаковые поля id1 id2 id3 но разные данные. и где это в предикатах обозначено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:08 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
msLex982183что если t1.id - пустой, то берется первый id из t2, а если и он пустой, то первый id из t3 Нет никаких "первых ID" coalesce не берет, это функция работает не с наборами данных а со значениями. Оно понятно, но что автор мел в виду, когда подставлял id из других таблиц? И что возьмет coalesce в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:12 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
982183msLexпропущено... Нет никаких "первых ID" coalesce не берет, это функция работает не с наборами данных а со значениями. Оно понятно, но что автор мел в виду, когда подставлял id из других таблиц? И что возьмет coalesce в этом случае? всё нормально возьмёт, общий ключ id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:13 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Понял. Автор доупрощался до нечитабельности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:15 |
|
||
|
FULL JOIN
|
|||
|---|---|---|---|
|
#18+
Вру. Это я спьяну вместо Full join увидел union all ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39802867&tid=1687923]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 448ms |

| 0 / 0 |
