![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
slutsker |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
добрый день,
есть MySQL табличка категорий вида (у категории может быть категория родитель) id | name | parent_id пусть она имеет вид 1 Статьи 0 2 Спорт 1 3 Авто 1 ................ 90 Налоги 1 91 Повести 0 92 Русские 91 93 Европейские 91 ......... 120 Ремонт 1 как бы мне вывести записи из базы так, чтобы они были сгруппировали по parent_id и отсортированы по алфавиту и стало так Статьи __Авто __Налоги __Ремонт __Спорт Повести __Европейски __Русские --------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Максимальный уровень вложенности - фиксирован? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
slutsker |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
максимальный уровень вложенности, в настоящий момент, фиксирован - у дочернего элемента не может быть дочернего элемента
это важное дополнение позволило решить задачу запросом вида
(решение подсказал очень грамотный специалист, за это ему большое спасибо) если вам известно, как это можно сделать для произвольного уровня вложенности средствами MySQL, пожалуйста, напишите --------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Просто изменить структуру хранения на ту, которая предназначена для хранения и обработки деревьев. Скажем, Nested Set. Добавлено через 5 минут и 41 секунду Если в данных будут изменения, и у какой-то категории потомок будет иметь ID меньше, чем родитель (почему нет?) - запрос вывалит чушь. Правильный вариант:
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
slutsker |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
странно,
проверил приведенный мною запрос на случай, когда id родителя меньше id сына - он работает ваш запрос работает, но выдаёт в неправильном виде __Авто __Налоги __Ремонт __Спорт Статьи __Европейски __Русские Повести --------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Верно, я был невнимателен. Запрос действительно даст верную выборку. Коммент прочитать и поправить лениво было? ну и не надо... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
slutsker |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
вот с parent_id!=0 работает правильно (не понял ваш комментарий в первый раз)
спасибо за рекомендацию Nested Set --------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Просто всегда забываю, в каких ЯП и СУБД True интерпретируется как 1, а в каких как -1... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |