Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! Такая ситуация. Есть три таблицы. t1, t2, t3 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Пишем JOIN Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. В результате получаем JOIN первых двух таблиц, и к этому результату JOIN третьей. Код: sql 1. 2. 3. 4. 5. А как получить такой результат:? Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 12:12 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Arl, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 12:26 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Arl, Точнее под ваши выходные данные: With tab1 as (SELECT * DB.dbo.t1), tab2 as (SELECT *,row_number() over (Partition by id order by (Select 1) /*или по желанию Order by val*/) as rn FROM DB.dbo.t2), tab3 as (SELECT *,row_number() over (Partition by id order by (Select 1) /*или по желанию Order by val*/) as rn FROM DB.dbo.t3) SELECT tab1.id, tab1.val, tab2.id, tab2.val, tab3.id, tab3.val FROM tab1 left join tab2 ON tab1.id = tab2.id left join tab3 ON tab1.id = tab3.id and tab2.rn = tab3.rn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 12:30 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 12:48 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
а чего тут разбираться то )) если вы сможете объяснить почему записи не должны "размножаться" по правилам множества - то сами и ответите как вам сделать правильный джоин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 14:26 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Гигабайт Мегабайтович Килобайтов, Я ошибочно полагал, что sql server делает второй JOIN к первой таблице, а не к результату JOINа первой и второй таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 14:43 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
ArlГигабайт Мегабайтович Килобайтов, Я ошибочно полагал, что sql server делает второй JOIN к первой таблице, а не к результату JOINа первой и второй таблиц. так он и делает к первой таблице )) - только там данных оказывается больше )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2018, 18:17 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Гигабайт Мегабайтович Килобайтов, В таблице t1 запись одна. После первого JOIN в объединенной таблице становится две записи. Второй JOIN (таблица t3) идет уже к объединенной таблице с двумя записями (t1 + t2), и в результате записей становится четыре. А я думал, что второй JOIN будет к таблице t1 с одной записью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 06:05 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
ArlГигабайт Мегабайтович Килобайтов, В таблице t1 запись одна. После первого JOIN в объединенной таблице становится две записи. Второй JOIN (таблица t3) идет уже к объединенной таблице с двумя записями (t1 + t2), и в результате записей становится четыре. А я думал, что второй JOIN будет к таблице t1 с одной записью. Это вы хотите так "видеть" )) а на самом деле таки объединяет t1 и t3. потому что если следовать вашей логике , то поменяв порядок джоинов - вы "должны" получить что хотите ))) но это ведь не так? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 09:50 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
Гигабайт Мегабайтович Килобайтов, Гигабайт Мегабайтович КилобайтовЭто вы хотите так "видеть" )) а на самом деле таки объединяет t1 и t3. Но ведь в t1 изначально только одна запись... Я так понимаю, что происходит объединение сначала таблиц t1 и t2, в результате появляются две записи c id = 1, и уже с этим результатом происходит следующее объединение, и получается 4 записи. Поправьте, если не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 11:00 |
|
||
|
JOIN трех таблиц
|
|||
|---|---|---|---|
|
#18+
ArlГигабайт Мегабайтович Килобайтов, Гигабайт Мегабайтович КилобайтовЭто вы хотите так "видеть" )) а на самом деле таки объединяет t1 и t3. Но ведь в t1 изначально только одна запись... Я так понимаю, что происходит объединение сначала таблиц t1 и t2, в результате появляются две записи c id = 1, и уже с этим результатом происходит следующее объединение, и получается 4 записи. Поправьте, если не прав. да откройте уже план и посмотрите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 11:04 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39617005&tid=1690093]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
91ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 426ms |

| 0 / 0 |
