А пока go, я спросил: " Как мне создать" хлебную крошку "категорий в чистом MySQL? ", которую один из членов stackoverflow предоставил этот аккуратный код для моих потребностей MySQL :
select group_concat(t2.name order by locate(concat('/', t2.id, '/'), concat(t1.path, '/')) separator ' - ') breadcrumb
from mdl_course_categories t1,
mdl_course_categories t2
where locate(concat('/', t2.id, '/'), concat(t1.path, '/'))
Сегодня я нахожу, что мне нужно решение SQL Server 2016 для этой комбинации функций (group_concat()
и locate()
) для репликации этой функции. Я попытался запустить этот код для этой базы данных, но вместо этого я получил сообщение об ошибке:
SQLState: 42000
Error Code: 156
Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near the keyword 'order'.
Я проверил другие вопросы , но не смог перевести это знание для моих нужд. Как я могу воспроизвести эту функцию в SQL Server 2016?
Редактировать: я прочитал ссылки, предоставленные @Bacon Bits (спасибо!), Но сделать это в SQL Server 2016 представляется как программирование кусочка сыра для полета на Луну. К сожалению, обновление не вариант, поэтому я застрял в этом горячем беспорядке. Все, что мне нужно сделать, это заменить числа в столбце path
на name
согласно id
. Например,
| id | name | path | should display as |
|---------|---------------|-------------------|--------------------------------|
| 1 | Fruit and Veg | /1 | Fruit and Veg - Fruit |
| 436547 | Fruit | /1/436547 | Fruit and Veg - Fruit |
| 4657598 | Apples | /1/436547/4657598 | Fruit and Veg - Fruit - Apples |
ТАК ЧУВСТВИТЕЛЬНО! Вот мой код:
select
stuff((',' + t2.name), 1, 1, charindex(concat('/', t2.id, '/'), concat(t1.path, '/')))
from prefix_course_categories t1,
prefix_course_categories t2
where charindex(concat('/', t2.id, '/'), concat(t1.path, '/'))
Это приводит к следующей ошибке:
SQLState: 42000
Error Code: 4145
Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]An expression of non-boolean type specified in a context where a condition is expected, near 'ORDER'.
Помощь оценена, спасибо.