2016-05-08 4 views
1

私はcategoriesという名前のテーブルを持っています。次のようにサブカテゴリを再帰的に取り込む方法は?

テーブル構造は以下の通りである:

DROP TABLE IF EXISTS `categories`; 
CREATE TABLE `categories` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(100) CHARACTER SET utf8 NOT NULL, 
    `parent_id` int(11) NOT NULL DEFAULT '-1', 
    PRIMARY KEY (`ID`) 
); 

テーブル内の項目の3種類があります

  1. (そのparent_id -1)メインカテゴリー
  2. 秒レベルカテゴリ(そのparent_idのいずれかです)メインカテゴリ
  3. サードレベルのカテゴリ(そのparent_idセカンドレベル・カテゴリーのいずれかである)ここで

は、いくつかのサンプルデータです:


- カテゴリのレコード


INSERT INTO `categories` VALUES ('1', 'A', '-1'); 
INSERT INTO `categories` VALUES ('2', 'B', '-1'); 
INSERT INTO `categories` VALUES ('3', 'C', '-1'); 
INSERT INTO `categories` VALUES ('4', 'a', '1'); 
INSERT INTO `categories` VALUES ('5', 'b', '2'); 
INSERT INTO `categories` VALUES ('6', 'c', '3'); 
INSERT INTO `categories` VALUES ('7', 'aa', '4'); 
INSERT INTO `categories` VALUES ('8', 'bb', '5'); 
INSERT INTO `categories` VALUES ('9', 'cc', '6'); 
INSERT INTO `categories` VALUES ('10', 'ccc', '6'); 

私は以下のような出力構造取得したい:すべてのヘルプは高く評価され

Main Category  Second Level Category  Third Level Category 
A       a       aa 
B       b       bb 
C       c       cc 
C       c       ccc 

を。

+0

? – zee

+0

ご迷惑をおかけいたしませんでした。 @NullSoulException –

答えて

2

あなたはそれを試してみることができます。

SELECT 
t1.title AS 'Main Category', 
t2.title AS 'Second Level Category', 
t3.title AS 'Third Level Category' 
FROM categories AS t1 
INNER JOIN categories AS t2 ON t2.parent_id = t1.ID 
INNER JOIN categories AS t3 ON t3.parent_id = t2.ID; 

あなたは以下のような出力構造体を取得します:カテゴリが決定されているか

Main Category  Second Level Category  Third Level Category 
A       a       aa 
B       b       bb 
C       c       cc 
C       c       ccc 

Reference

関連する問題