2015-04-17 111 views
1

結合記錄我有兩個表:從兩個MySQL表

記錄

id subrecord_of 
1 0 
2 1 
3 0 
4 1 
5 0 
6 5 

id value 
    1 11 
    1 111 
    2 222 
    2 222 
    2 2222 
    3 33 
    4 44 
    6 66 
    6 666 

的目標是選擇記錄不是子記錄

with corr從記錄和子記錄esponding值的總和:

id sub sum_of_values 
1 2,4  11,111,2222,222,44 
3 null 33 
5 6  666,66 

列 「ID」 - 記錄,其中子是0

列 「子」 - 子記錄 FE ID 2和ID 4是id爲1的子記錄的列表

列 「值」 - 唯一值 FE ID 1 =不同的值從ID1 + ID2 + ID4

任何幫助的名單?

+0

所以「sub_record_of」就像「父母」 – Strawberry

+0

只有當有「1」 – Felluciano

回答

0

這很棘手,因爲連接會產生一堆額外的行。將數據彙總在一起的關鍵思想是group_concat()group by

下面的工作:

select r.id, 
     group_concat(distinct rs.id) as sub, 
     group_concat(distinct v.value) as values 
from records r left join 
    records rs 
    on rs.subrecordof = r.id left join 
    values v 
    on v.id in (r.id, rs.id) 
where r.subrecordof = 0 
group by r.id; 

性能不會特別好。所以,這個解決方案應該適用於小型數據集。它可能不適用於大型數據集。

+0

非常感謝戈登! – Felluciano