Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
22.02.2011, 00:03
|
|||
---|---|---|---|
|
|||
проблема с group_concat в создании пути при выборке дерева (closure table) |
|||
#18+
имеется дерево хранящееся в двух таблицах (пишу гостевуху) создаются таблицы 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)? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.02.2011, 11:44
|
|||
---|---|---|---|
|
|||
проблема с group_concat в создании пути при выборке дерева (closure table) |
|||
#18+
Как вариант, можно посмотреть как реализована group_concat и сделать свою агрегатную функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.03.2011, 11:28
|
|||
---|---|---|---|
|
|||
проблема с group_concat в создании пути при выборке дерева (closure table) |
|||
#18+
Celebithil, Напиши селект без ордер бай так чтобы работал на SQLite. Затем Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=54&tablet=1&tid=2009224]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
others: | 337ms |
total: | 480ms |
0 / 0 |