2016-03-08 4 views
0

мне нужно дерево 3 уровня меню (не неограниченное)Fixed 3 уровня Дерево меню

имя_таблицы = LEVEL1

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

имя_таблицы = LEVEL2

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

имя_таблицы = 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   | 
+------------------+----------------+-----------------+ 

Немного жадности. Может кто-нибудь помочь мне с этим, а также которые перечислить все имя/идентификатор WHERE родителя идентификатор NULL

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

ответ

1

Как представлены таблицы Level3 является основной таблицы и всегда будет иметь какие-то данные. я полагаю, что вы делаете это в соответствии с вашими потребностями. однако вы должны попробовать также с двумя таблицами: Id, Name, ParentID только с одной таблицей, вы можете использовать неограниченное отношение. где Parentid - идентификатор более высокого уровня той же таблицы.

В любом случае этот вопрос должен работать для вашего случая:

«SELECT LEVEL1.name, LEVEL2.name, LEVEL3.name ОТ (LEVEL1 RIGHT JOIN LEVEL2 НА LEVEL1.level1_id = LEVEL2.level1_id) RIGHT JOIN ON LEVEL3 LEVEL2.level2_id = LEVEL3.level2_id; '

+0

Это отлично работает. Можете ли вы помочь мне с верхним меню, которое я добавил к вопросу? Многие Thx –

+0

жаль, что я не был в сети, просто увидел ваш вопрос. на каком языке, Html, C#, PHP, потому что я могу помочь, возможно, с HTML C#? –

+0

Ну, я могу сделать это сам с php-скриптом (повторяющиеся запросы), и просто интересно, можно ли это сделать, используя один запрос mysql вместо этого, который был бы намного более эффективным. Я изменил свой вопрос и добавил ожидаемый результат запроса :) –

Смежные вопросы