|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Добрый вечер Есть пара таблиц В каждой есть несколько полей комбинация которых в одной из таблиц уникальна, а в другой будет несколько строк и при этом количество этих "несколько строк" может отличаться. основной смысл запроса получить полный перечень первой таблицы и значения из второй по определенному критерию, с null там где такого критерия нет. как используя джойны соединить таблицы чтобы получить в результирующем запросе "пропущенные" строки второй таблицы вот для объяснения Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
запрос 1 - обычный join выдает строки которые которые есть в двух таблицах, тут все разумно и освоено запрос 2 - а вот left выдает null только если никакого из трех полей нет в Т2 запрос 3 - ну тут все понятно где есть значение выводим (3 строки) запрос 4 - а вот тут получается что результат как в 3м, но хотелось то получить 6 строк и 3 из них с null как получить вот такое Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:26 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
1. посмотри в сторону outer apply select #T1.*, B.* from #T1 outer apply (select top 1 * from #T2 where #T1.num = #T2.num AND #T1.ver = #T2.ver AND #T1.pos = #T2.pos) B 2. Непонятно как в результате-примере получется 1 1 2 egx NULL NULL NULL NULL NULL 2 1 2 xe NULL NULL NULL NULL NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:41 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:46 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
invm, ОГРОМНОЕ СПАСИБО идеальный результат, как то никогда в голову не приходило, что в объединении можно подставить одно из полей как значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 11:50 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Запрос вида Код: sql 1. 2. 3.
эквивалентен запросу Код: sql 1. 2. 3.
Правильно так: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 16:27 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Джонни Кейдж Запрос вида Код: sql 1. 2. 3.
эквивалентен запросу Код: sql 1. 2. 3.
Правильно так: Код: sql 1. 2.
то первый запрос тоже допустим. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 18:32 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
iap Не совсем так. Есть нюансы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 13:41 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Uridian, где в примере "учитываются возможные значения NULL"? В примере они отрицаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 14:00 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Владислав Колосов Uridian, где в примере Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 14:10 |
|
Left Join по нескольким полям
|
|||
---|---|---|---|
#18+
Uridian Владислав Колосов Uridian, где в примере Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
В WHERE ограничения на правую таблицу LEFT JOIN, а результат тем не менее тот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 15:16 |
|
|
start [/forum/topic.php?fid=46&fpage=26&tid=1684787]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
101ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 200ms |
0 / 0 |