2016-03-08 1 views
0

je besoin d'un arbre de menu à 3 niveaux (pas illimité)fixe 3 niveaux Menu Arbre

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 | 
+-------------+----------------------+-----------+ 

Est-il possible de courir un péché gle requête mysqli qui obtient le résultat suivant? Pour que je sache exactement à quel niveau se situe chaque catégorie?

+------------------+----------------+-----------------+ 
| 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   | 
+------------------+----------------+-----------------+ 

Un peu plus gourmand. Quelqu'un peut-il me aider ainsi que la liste de tous le nom/id où id parent est NULL

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

Répondre

1

Comme vous avez présenté des tables est Level3 table principale et aura toujours des données. Je suppose que la façon dont vous faites correspond à vos besoins. Cependant, vous devriez essayer aussi avec deux tables, Id, Name, ParentID une seule table, vous pouvez aller relation illimitée. où Parentid est l'ID de niveau supérieur de la même table.

Quoi qu'il en soit cette requête devrait fonctionner pour votre cas:

« SELECT LEVEL1.name, LEVEL2.name, LEVEL3.name DE (LEVEL1 RIGHT JOIN LEVEL2 SUR LEVEL1.level1_id = LEVEL2.level1_id) RIGHT JOIN LEVEL3 ON LEVEL2.level2_id = LEVEL3.level2_id; '

+0

Cela fonctionne très bien. Pouvez-vous m'aider avec le menu principal que j'ai ajouté à la question? Beaucoup de Thx –

+0

désolé je n'étais pas en ligne juste vu votre question. dans quelle langue, Html, C#, PHP parce que je peux aider avec HTML C#? –

+0

Eh bien, je peux le faire moi-même avec un script PHP (requêtes répétées) et je me demandais simplement si cela pouvait être réalisé en utilisant une seule requête mysql à la place coz qui serait beaucoup plus efficace. J'ai modifié ma question et ajouté le résultat de la requête attendu :) –