|
Соединять таблицы left join пока не будет положительное значение
|
|||
---|---|---|---|
#18+
Версия СУБД Microsoft SQL Server 2012 (SP4-OD) (KB4091266) - 11.0.7469.6 (X64) есть 2 таблицы, 2 иерархии. Их надо сопоставить. Они немного отличаются, не все элементы есть как в одно, так и в другой иерархии. первая таблица содержит столбцы col_id, col_prn_id, level. вторая таблица содержит столбцы row_id, row_col_id. соединяются они так: Код: sql 1. 2. 3. 4. 5. 6. 7.
максимальное кол-во level = 8, но у каждого col_id может быть меньше 8 максимальный level. мне надо написать запрос или процедуру или рекурсию, которая делает left join с таблицей colls до тех пор, пока tab_rn.row_id is null. То есть соединять до первого положительного (включительно)row_id. Всегда найдется хотя бы 1 положительный row_id. Результат запроса прикрепила ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 22:45 |
|
Соединять таблицы left join пока не будет положительное значение
|
|||
---|---|---|---|
#18+
Диана Орел максимальное кол-во level = 8, ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 23:03 |
|
Соединять таблицы left join пока не будет положительное значение
|
|||
---|---|---|---|
#18+
Диана Орел, не хватает выборки distinct col_id, т.е. ключа. С этой выборкой и соединяйте left join подзапросы по уровням вложенности. key, coalesce(lvl1value, lvl2value, ..., lvlNvalue) FirstFoundValue ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 23:54 |
|
Соединять таблицы left join пока не будет положительное значение
|
|||
---|---|---|---|
#18+
Диана Орел То есть соединять до первого положительного (включительно)row_id. Всегда найдется хотя бы 1 положительный row_id. Бред, канешно, знатный. Но если "Всегда найдется хотя бы 1 положительный row_id" Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2021, 07:50 |
|
Соединять таблицы left join пока не будет положительное значение
|
|||
---|---|---|---|
#18+
court, таблица на проме большая 500 тыс записей. Не у всех есть 8 уровней, у многих меньше. И первое положительное число наступит раньше, чем 8 уровень. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2021, 08:06 |
|
Соединять таблицы left join пока не будет положительное значение
|
|||
---|---|---|---|
#18+
aleks222 Диана Орел То есть соединять до первого положительного (включительно)row_id. Всегда найдется хотя бы 1 положительный row_id. Бред, канешно, знатный. Но если "Всегда найдется хотя бы 1 положительный row_id" Код: sql 1. 2. 3.
Спасибо. Просто и изящно. Круто! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2021, 08:41 |
|
|
start [/forum/topic.php?fid=46&msg=40093963&tid=1684365]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
131ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 297ms |
total: | 524ms |
0 / 0 |