2016-03-08 68 views
0

我需要一個3級菜單樹(不限制)固定3級菜單樹

的tablename = LEVEL1

+-------------+----------------------+ 
| level1_id | name     | 
+-------------+----------------------+ 
|   1 | AIR CONDITIONER  | 
|   2 | TV     | 
+-------------+----------------------+ 

的tablename = LEVEL2

+-------------+----------------------+-----------+ 
| level2_id | name     | level1_id | 
+-------------+----------------------+-----------+ 
|   1 | SPLIT TYPE   |  1 | 
|   2 | WINDOWS TYPE   |  1 | 
|   3 | LCD     |  2 | 
|   4 | PLASMA    |  2 | 
|   5 | MUSIC PLAYER   | NULL | 
+-------------+----------------------+-----------+ 

的tablename = LEVEL3

+-------------+----------------------+-----------+ 
| level3_id | name     | level2_id | 
+-------------+----------------------+-----------+ 
|   1 | AC 0.75 TON   |  1 | 
|   2 | AC 1 TON    |  1 | 
|   3 | WT 0.75 TON   |  2 | 
|   4 | WT 1 TON    |  2 | 
|   5 | LCD 32" UP   |  3 | 
|   6 | LCD 42" UP   |  3 | 
|   7 | PLASMA 32" UP  |  4 | 
|   8 | PLASMA 42" UP  |  4 | 
|   9 | CD PLAYERS   |  5 | 
|   10 | MP3 PLAYERS   |  5 | 
|   11 | CDS     | NULL | 
|   12 | BOOKS    | NULL | 
+-------------+----------------------+-----------+ 

是否有可能犯罪gle mysqli查詢獲得以下結果? 爲了讓我確切知道每個分類所屬的級別?

+------------------+----------------+-----------------+ 
| LEVEL1   | LEVEL2   | LEVEL3   | 
+------------------+----------------+-----------------+ 
| AIR CONDITIONER | SPLIT TYPE  | AC 0.75 TON  | 
| AIR CONDITIONER | SPLIT TYPE  | AC 1 TON  | 
| AIR CONDITIONER | WINDOWS TYPE | WT 0.75 TON  | 
| AIR CONDITIONER | WINDOWS TYPE | WT 1 TON  | 
| TV    | LCD   | LCD 32" UP  | 
| TV    | LCD   | LCD 42" UP  | 
| TV    | PLASMA   | PLASMA 32" UP | 
| TV    | PLASMA   | PLASMA 42" UP | 
| NULL    | MUSIC PLAYER | CD PLAYERS  | 
| NULL    | MUSIC PLAYER | MP3 PLAYERS  | 
| NULL    | NULL   | CDS    | 
| NULL    | NULL   | BOOKS   | 
+------------------+----------------+-----------------+ 

有點貪婪。有人可以幫我這個問題,以及其中列出所有的名稱/ ID其中,當你提出表Level3的是主表和總會有一些數據父ID爲NULL

+------------------+------------+------+ 
| name    | tablename | id | 
+------------------+------------+------+ 
| AIR CONDITIONER | LEVEL1  | 1 | 
| TV    | LEVEL1  | 2 | 
| MUSIC PLAYER  | LEVEL2  | 5 | 
| CDS    | LEVEL3  | 11 | 
| BOOKS   | LEVEL3  | 12 | 
+------------------+------------+------+ 

回答

1

。我想你正在做的方式適合你的需求。不過你也應該試試兩個表,Id,Name,ParentID只有一個表,你可以去無限的關係。 Parentid是同一表的較高級別ID。

反正這個查詢應該適用於你的情況:

「SELECT LEVEL1.name,LEVEL2.name,LEVEL3.name FROM(LEVEL1 RIGHT JOIN LEVEL2 ON LEVEL1.level1_id = LEVEL2.level1_id)RIGHT JOIN LEVEL3 ON LEVEL2.level2_id = LEVEL3.level2_id;'

+0

這很好。 你能幫我解決我添加到問題的頂層菜單嗎?許多Thx –

+0

對不起,我不在線只是看到你的問題。在哪種語言,Html,C#,PHP,因爲我可以幫助HTML C#? –

+0

嗯,我可以用php腳本(重複查詢)自己做,只是想知道是否可以通過使用單個mysql查詢來實現,而不是因爲這會更有效。我修改了我的問題,並添加了預期的查詢結果:) –