2010-02-25 1 views
3

У меня есть таблица, которая имеет отношение один к самому себе. Каждая запись может содержать n детей из той же таблицы. НапримерSQL: выберите SUM из всех записей записей рекурсивно

create table folder 
ID: Number 20 PK 
PARENT_ID: Number 20 FK references folder.ID 
SIZE: NUMBER 20 
... 

Учитывая идентификатор, я хочу, чтобы выбрать SUM (размер) все записи папки рекурсивно. Целевая база данных - это MySql 5, но было бы неплохо , если бы она была достаточно общей для работы в Oracle и MS-SQL.

Я не знаю, насколько глубоко дерево, может быть 1 уровень, может быть 50 (или более)

ответ

3

Это может быть какой-то определенная помощь: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

Это будет простой запрос в Oracle (http://download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htm), поскольку она поддерживает иерархические запросы с помощью «CONNECT BY», но я не думаю, что есть сопоставимое решение для MySQL. Похоже, вы собираетесь сделать что-то действительно неэффективное, или вам придется изменить структуру таблиц для поддержки этой конкретной функции.

1

Одно решение было бы добавить столбец в таблицу «topmost_parent» и присоединиться на этом.