2015-10-10 74 views
1

我有2個表。首先是項目表列:Concat中的子項目按列編號

itemId|itemNumber|description 
1  abc  xxxx 
2  def  xxxx 
3  hij  xxxx 

然後我有列的子項表:

parentItemId|childItemId 
1   2 
2   3 
1   3 
3   2 
3   1 

我試着去選擇與在第三級聯孩子itemNumbers名單itemNumbers列表列像這樣: 結果:

ItemNumber|description|childItemNumber1, childItemNumber2, childItemNumber3... 
abc  xxxx  def,hij 
def  xxxx  hij 
hij  xxxx  def,abc 

,所以我需要查找的項目數在第一表格中的父子關係在連接前它們。

香港專業教育學院嘗試這樣的事情:

SELECT c.itemNumber, c.description, GROUPBY_CONCAT(SELECT a.itemNumber from Item as a inner join SubItem as b on a.itemId = b.childItemId where a.Itemid = b.parentItemId) FROM Item as c WHERE 1 

,但我不甚至認爲它接近

+0

編輯您的問題,並提供樣本數據和預期結果。 SQL小提琴也可以提供幫助。 –

回答

1

這需要兩個連接和聚合:

select p.itemNumber, p.description, 
     GROUP_CONCAT(ci.description) as children 
from Item p left join 
    SubItem s 
    on p.itemId = s.parentItemId left join 
    Item ci 
    ON s.childItemId = ci.ItemId 
group by p.ItemId; 

子查詢是沒有必要的。

+0

沒有s.itemnumber只有s.parentid和s.childid,這是具有挑戰性的部分。 – user1336827

+0

@ user1336827。 。 。示例數據極大地說明了您的問題。我修改了答案。 –

+0

這是密切的我想,如果你完成第二個ON並將ci.description更改爲ci.item編號。但是孩子們的商品編號與原始商品編號 – user1336827