Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
30.08.2021, 22:45
|
|||
---|---|---|---|
|
|||
Соединять таблицы 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, 23:03
|
|||
---|---|---|---|
Соединять таблицы left join пока не будет положительное значение |
|||
#18+
Диана Орел максимальное кол-во level = 8, ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.08.2021, 23:54
|
|||
---|---|---|---|
|
|||
Соединять таблицы left join пока не будет положительное значение |
|||
#18+
Диана Орел, не хватает выборки distinct col_id, т.е. ключа. С этой выборкой и соединяйте left join подзапросы по уровням вложенности. key, coalesce(lvl1value, lvl2value, ..., lvlNvalue) FirstFoundValue ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2021, 07:50
|
|||
---|---|---|---|
Соединять таблицы left join пока не будет положительное значение |
|||
#18+
Диана Орел То есть соединять до первого положительного (включительно)row_id. Всегда найдется хотя бы 1 положительный row_id. Бред, канешно, знатный. Но если "Всегда найдется хотя бы 1 положительный row_id" Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2021, 08:06
|
|||
---|---|---|---|
|
|||
Соединять таблицы left join пока не будет положительное значение |
|||
#18+
court, таблица на проме большая 500 тыс записей. Не у всех есть 8 уровней, у многих меньше. И первое положительное число наступит раньше, чем 8 уровень. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2021, 08:41
|
|||
---|---|---|---|
|
|||
Соединять таблицы left join пока не будет положительное значение |
|||
#18+
aleks222 Диана Орел То есть соединять до первого положительного (включительно)row_id. Всегда найдется хотя бы 1 положительный row_id. Бред, канешно, знатный. Но если "Всегда найдется хотя бы 1 положительный row_id" Код: sql 1. 2. 3.
Спасибо. Просто и изящно. Круто! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&mobile=1&tid=1684365]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 282ms |
0 / 0 |