我正在製作一個產品和類別的樹。樹接受任何類別中存在的產品,無論它是父節點還是葉。如何在產品和類別應用程序樹中加入1個表格(2個不同的表格)?
這裏是我的表
#category table
+------+-----------+-------------+
| ID | cat_name | parent_cat |
+------+-----------+-------------+
| 1 | TV | NULL |
+------+-----------+-------------+
| 2 | LCD | 1 |
+------+-----------+-------------+
| 3 | PLASMA | 1 |
+------+-----------+-------------+
#product table
+------+-----------+-----------+
| ID | prd_name | prd_cat |
+------+-----------+-----------+
| 1 | LG | 1 |
+------+-----------+-----------+
| 2 | HD | 2 |
+------+-----------+-----------+
| 3 | FHD | 2 |
+------+-----------+-----------+
我要的是做一個選擇查詢檢索包含所有類別和產品的全樹。
我可以用這個查詢
select cat1.cat_name lvl1, cat2.cat_name lvl2
from category cat1 left join category cat2 on cat1.ID = cat2.parent_cat
where cat1.parent_cat is null;
這個檢索類別給了我這樣的事情
+------+------+
| lvl1 | lvl2 |
+------+------+
| TV | LCD |
+------+------+
| TV |PLASMA|
+------+------+
,當我試圖加入的產品我用這個查詢樹
select cat1.cat_name,cat2.cat_name,product.prd_name
from category cat1 left join category cat2 on cat1.ID = cat2.parent_cat
left join product on cat1.ID = product.prd_cat
where cat1.parent_cat is null;
但這個sql給了我這個結果
+-----------+-----------+-----------+
| cat_name | cat_name | prd_name |
+-----------+-----------+-----------+
| TV | LCD | LG |
+-----------+-----------+-----------+
| TV | PLASMA | LG |
+-----------+-----------+-----------+
我希望產品表被視爲類別(2級)表,所以如果像TV這樣的父節點有一些子類別和子產品,我就得到了它們兩個。 如何得到一個結果樹像這樣:
+-------------+------------+------------+
| tree_lvl_1 | tree_lvl_2 | tree_lvl_3 |
+-------------+------------+------------+
| TV | LG | NULL |
+-------------+------------+------------+
| TV | LCD | HD |
+-------------+------------+------------+
| TV | LCD | FHD |
+-------------+------------+------------+
| TV | PLASMA | NULL |
+-------------+------------+------------+
電視(類)> LG(產品)
電視(類)> LCD(類別)> HD(產品)
TV(類)> LCD(類別)> FHD(產品)
TV(類)> PLASMA(類別)
編輯:這個 question,你建議是關於建立只有類別的樹,我知道如何做到這一點。我的問題是我也有 「產品」表應該加入樹作爲節點就像類!我想將類別和產品表視爲一個表(節點)
你的'category'表有多深?它有3級,4級......嗎? –
[從MySQL中的分層數據生成基於深度的樹(無CTE)]可能的副本(http://stackoverflow.com/questions/5291054/generating-depth-based-tree-from-hierarchical-data-in-mysql- no-ctes) – mroach
@ PhamX.Bach,是這個產品樹是4級。我將在帳戶樹中應用相同的樹概念,這將更深入7層。 –