powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / проблема с group_concat в создании пути при выборке дерева (closure table)
4 сообщений из 4, страница 1 из 1
проблема с group_concat в создании пути при выборке дерева (closure table)
    #37129399
Celebithil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеется дерево хранящееся в двух таблицах (пишу гостевуху)

создаются таблицы
CREATE TABLE data (`id` integer not null primary key, `time_` datetime not null, `message` text not null, title text, author text);
CREATE TABLE closure
(`ancestor` integer , `descendant` integer,
FOREIGN KEY(`ancestor`) REFERENCES data(`id`),
FOREIGN KEY(`descendant`) REFERENCES data(`id`));

INSERT INTO CLOSURE VALUES (0, 0); корневой элемент

данные вставляются двумя INSERT'ами

собственно сообщение
"INSERT INTO data (message, title, author, time_) VALUES (?, ?, ?, ?)"

и путь
"INSERT INTO closure (ancestor, descendant) SELECT ancestor, last_insert_rowid() FROM closure
WHERE descendant = ? UNION ALL SELECT last_insert_rowid(), last_insert_rowid()"

ознакомившись со следующей статьёй
http://karwin.blogspot.com/2010/03/rendering-trees-with-closure-tables.html
написал(списал) выборку элементов+полный путь

select n.message, group_concat(n.id, '.') as path
from closure d
join closure a on (a.descendant = d.descendant)
join data n on (n.id = a.ancestor)
where d.ancestor = 0 and d.descendant != d.ancestor
group by d.descendant order by path;

всё работает, но возникает вопрос, в примере используется MySQL, а там внутри group_concat можно использовать order by , в то время как в SQLite "The order of the concatenated elements is arbitrary".
Как можно отсортировать "сцепляемые" значения(n.id)?
...
Рейтинг: 0 / 0
проблема с group_concat в создании пути при выборке дерева (closure table)
    #37131877
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, можно посмотреть как реализована group_concat и сделать
свою агрегатную функцию.
...
Рейтинг: 0 / 0
проблема с group_concat в создании пути при выборке дерева (closure table)
    #37141255
maximand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Celebithil,

Напиши селект без ордер бай так чтобы работал на SQLite.
Затем
Код: plaintext
1.
select * from ( select.... ) order by  1 
...
Рейтинг: 0 / 0
проблема с group_concat в создании пути при выборке дерева (closure table)
    #37145416
Celebithil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry ArefievКак вариант, можно посмотреть как реализована group_concat и сделать
свою агрегатную функцию.
Спасибо! Всё так и сделал! Всё работает!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / проблема с group_concat в создании пути при выборке дерева (closure table)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]