2013-03-13 4 views
-3

У меня есть две таблицы. группы (Id, title, parentGroupID) Учетные записи (AID, GroupID, Title, Balanace).Итого родительская группа

Группы

ID | Title | parentGroupID 
1 | Assets| 0 
2 | Bank | 1 
3 | myBank| 2 
4 | cash | 1 

Accounts

AID | GroupID | Title  | Balanace 
1 | 3  | acc1234  | 5000 
2 | 3  | acc002  | 10000 
3 | 4  | counter cash | 60000 

Теперь я хочу, чтобы показать активы = 5000 + 10000 + 60000, как все являются членами Assets групп.

+3

Добро пожаловать в StackOverflow. Пожалуйста, обратитесь к [FAQ] (http://stackoverflow.com/faq). Обновите свой ответ с помощью [того, что вы пробовали] (http://www.whathaveyoutried.com). – Kermit

+0

Существует ли конечное число уровней групп? (В приведенных примерных данных имеется максимум три уровня - myBank принадлежит Банку, который принадлежит активам.) –

+1

См. [Управление иерархическими данными в MySQL] (http://mikehillyer.com/articles/managing-hierarchical-data -in-mysql /) – Barmar

ответ

0

Играть с этим и посмотреть, что вы получите:

SELECT 
    t1.Title as Group1, 
    t2.Title as Group2, 
    t3.Title as Group3, 
    t4.Title as Group4, 
    t5.Title as Group5, 
    a1.Title as SubGroup1, 
    a2.Title as SubGroup2, 
    a3.Title as SubGroup3, 
    a4.Title as SubGroup4, 
    a5.Title as SubGroup5, 
    t1.parentGroupID, 
    t2.parentGroupID, 
    t3.parentGroupID, 
    t4.parentGroupID, 
    t5.parentGroupID, 
    a1.Balance, 
    a2.Balance, 
    a3.Balance, 
    a4.Balance, 
    a5.Balance 
      FROM GROUPS t1 
     LEFT JOIN GROUPS t2 ON t2.parentGroupID = t1.ID 
     LEFT JOIN GROUPS t3 ON t3.parentGroupID = t2.ID 
     LEFT JOIN GROUPS t4 ON t4.parentGroupID = t3.ID 
     LEFT JOIN GROUPS t5 ON t5.parentGroupID = t4.ID 
     LEFT OUTER JOIN ACCOUNTS a1 ON a1.GroupID = t1.ID 
     LEFT OUTER JOIN ACCOUNTS a2 ON a2.GroupID = t2.ID 
     LEFT OUTER JOIN ACCOUNTS a3 ON a3.GroupID = t3.ID 
     LEFT OUTER JOIN ACCOUNTS a4 ON a4.GroupID = t4.ID 
     LEFT OUTER JOIN ACCOUNTS a5 on a5.GroupID = t5.ID 
WHERE t1.parentGroupID = 0 
+0

показывает результат как group1, group2, group3, подгруппа1 ... баланс, balnce, blance то, что я хочу, это groupID, GroupTtitle, balanace 1 активы 210000 – user2166048

Смежные вопросы