Рекурсивный CTE's SQL и пользовательское упорядочивание вида

Вам дана переменная (она передается как параметр в функцию), поэтому вам не нужно ее создавать - просто установите length в str.length:

[117 ]
function exerciseThree (str) {
  var length = str.length;
  return length;
}

console.log("'One' is " + exerciseThree("One") + " characters long");
console.log("'Hello, World!' is " + exerciseThree("Hello, World!") + " characters long");

9
задан Community 23 May 2017 в 12:01
поделиться

4 ответа

Я уверен, что Вы будете любить это. Я недавно узнаю о Dense_Rank () функцию, которая является для "рейтинга в разделе набора результатов" согласно MSDN

Проверьте код ниже и как "CommentID" отсортирован.

Насколько я понимаю, Вы пытаетесь разделить свой набор результатов ParentCommentID.

Обратите внимание на "denserank" столбец.

with Replies (CommentID, ParentCommentID, Level) as 
(
        select  c.CommentID, c.ParentCommentID, 1 as Level
        from    Comment c
        where   ParentCommentID is null and CommentID = 1

        union all

        select  c.CommentID, c.ParentCommentID, r.Level + 1 as Level
        from    Comment c
                inner join Replies r on c.ParentCommentID = r.CommentID
)
select  *,
        denserank = dense_rank() over (partition by ParentCommentID order by CommentID)
from    Replies
order by denserank

alt text

Результат ниже

8
ответ дан 4 December 2019 в 21:51
поделиться

Hmmmm - Я не уверен, является ли Ваша структура самым подходящим для этой проблемы. Первое, что пришло на ум я не могу думать так или иначе для сортировки данных, поскольку Вы хотите их в вышеупомянутом запросе.

Лучшее, о котором я могу думать, - то, если у Вас есть родительская таблица, которая связывает Ваши комментарии (например, таблица темы). Если Вы делаете необходимо смочь просто присоединиться ответам на тот (необходимо будет включать корректный столбец, очевидно), и затем можно отсортировать по topicID, Уровень для получения порядка сортировки, который Вы после (или независимо от того, что другая информация о таблице темы представляет хорошее значение для сортировки).

0
ответ дан 4 December 2019 в 21:51
поделиться

Рассмотрите хранение всей иерархии (с триггерами для обновления его, если это изменяется) в поле.

Это поле в Вашем примере имело бы: 1 1.2 1.2.3 1.2.5 1.4

затем просто необходимо отсортировать на том поле, попробовать это и видеть:

create table #temp (test varchar (10))
insert into #temp (test)
select '1'
union select '1.2'
union select '1.2.3'
union select '1.2.5'
union select '1.4'
select * from #temp order by test asc
0
ответ дан 4 December 2019 в 21:51
поделиться

Вы должны использовать иерархию (только sql2008) или связку строк (или байтов).

1
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: