2015-10-07 134 views
0

我的問題是如何讓類別列表顯示在具有父級名稱的表格中?選擇類別列表是否具有父類別名稱?

分類表的結構類似:

enter image description here

分類數據:

ID vn_name en_name parent_id path 
----------------------------------------------- 
1 Sanpham Product 0   0-1- 
2 Apple  Apple  1   0-1-2- 
3 Sony  Sony  1   0-1-3- 
4 Iphone Iphone 2   0-1-2-4- 
5 Ipad  Ipad  2   0-1-2-5- 
6 Xperia Xperia 3   0-1-3-6- 
... 

那麼,如何查詢來獲取列表這樣呢?

ID vn_name en_name vn_parent  en_parent  
----------------------------------------------------- 
1 Sanpham Product Root   Root   
2 Apple  Apple  Sanpham   Product  
3 Sony  Sony  Sanpham   Product 
4 Iphone Iphone Apple   Apple 
5 Ipad  Ipad  Apple   Apple 
6 Xperia Xperia Sony   Sony 
... 

回答

1

您可以通過使用LEFT JOIN連接表本身來實現此目的。

試試這個:

select c1.id, 
     c1.vn_name, 
     c1.en_name, 
     -- if parent id is 0 then make it root 
     if(c1.parent_id =0,'root',c2.vn_name) as vn_parent, 
     if(c1.parent_id =0,'root',c2.en_name) as en_name 
from Category c1 left join Category c2 on c1.parent_id=c2.id 
order by c1.id 

SQL小提琴例:http://sqlfiddle.com/#!9/b6a63/3

+0

謝謝親!如果我爲vn_parent添加WHERE,那怎麼樣? SQL小提琴例:http://sqlfiddle.com/#!2/b6a63/3 我很抱歉,我的SQL不好:( –

+0

Yeah..you可以在你想去的地方添加條件 –

+1

檢查此:http://sqlfiddle.com/#!2/b6a63/8。我已更新。 –