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