2013-03-13 2 views
-3

두 개의 테이블이 있습니다. 그룹 (Id, title, parentGroupID) 계정 (AID, GroupID, Title, Balanace).부모 그룹 합계

그룹

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

계정

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

는 지금은 모든 자산 그룹의 구성원으로 = 5000 + 10000 + 60000 자산을 보여주고 싶어요. 이와

+3

에 오신 것을 환영에 StackOverflow에. [FAQ] (http://stackoverflow.com/faq)에서 지침을 찾으십시오. [시도한 내용] (http://www.whathaveyoutried.com)으로 답변을 업데이트하십시오. – Kermit

+0

한정된 수의 그룹이 있습니까? (표시된 샘플 데이터에는 myBank가 자산에 속한 Bank에 속합니다.) –

+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, subgroup1 ...로 결과를 표시합니다. balance, balnce, blance 내가 원하는 것은 groupID, GroupTtitle, balanace 자산 1 개 210000 – user2166048