2016-05-28 22 views
0

私はPHPとmySQLを学習しており、親子要素の階層メニューベースを構築するためのコードを作成する助けが必要です。深いレベルは1人の子供になります。PHP + mySQL階層メニューを作成する再帰的選択

これは、テーブルの構造である:

CREATE TABLE `businessprocess` (`bp_id` int(11), `bp_order` int(11), `bp_name` varchar(50), `bp_parent` int(11), `bp_active` tinyint(1), `dp_id` int(11)) ENGINE=InnoDB; 

このデータ:

INSERT INTO `businessprocess` (`bp_id`, `bp_order`, `bp_name`, `bp_parent`, `bp_active`, `dp_id`) VALUES 
(1, 1000, 'Solicitud de Servicios (fijo y movil)', NULL, 1, 1), 
(2, 1100, 'Personas', 1, 1, 1), 
(3, 1200, 'Empresas', 1, 1, 1), 
(4, 2000, 'Baja de Servicio', NULL, 1, 1), 
(5, 2100, 'Personas', 4, 1, 1), 
(6, 2200, 'Empresas', 4, 1, 1), 
(7, 2300, 'Defunción', 4, 1, 1), 
(8, 2400, 'Tercero', 4, 1, 1), 
(9, 3000, 'Modificacion de Servicio', NULL, 1, 1), 
(10, 4000, 'Recambio de Equipo', NULL, 1, 1), 
(11, 3100, 'Personas o Empresas', 9, 1, 1), 
(12, 3200, 'Tercero', 9, 1, 1), 
(13, 4100, 'Personas o Empresas', 10, 1, 1), 
(14, 4200, 'Tercero', 10, 1, 1); 

これはPHPでのメニューのために必要な出力です:

Solicitud de Servicios (fijo y movil) 
    --Personas 
    --Empresas 
    Baja de Servicio 
    --Personas 
    --Empresas 
    --Defunción 
    --Tercero 
    Modificacion de Servicio 
    --Personas o Empresas 
    --Tercero 
    Recambio de Equipo 
    --Personas o Empresas 
    --Tercero 

任意のヘルプは本当に感謝されます。ありがとう!返された結果の実行

SELECT `bp_name` FROM `businessprocess` WHERE bp_parent IS NOT NULL AND `bp_parent` = bp_id(gotten from the previous result) 

のそれぞれについて、AC

+0

必要なものを表示する必要があります。なぜあなたはいわゆる「再帰的選択」が必要なのでしょうか?多次元配列を使用して、特定の行をその親に関連付けることを検討することができます。最初にbp_parent nullを選択し、bp_parent not nullを選択して接続します。 – Shadouts

答えて

0

まず実行

SELECT bp_id, `bp_name` FROM `businessprocess` WHERE bp_parent IS NULL 

第二にそれはあなたが非常に多くの方法で行うことができる必要とされている何が

関連する問題