2010-05-22 47 views
1

我有表,这样的价值观,mysql通过单个查询获取结果父ID和类别ID?

CREATE TABLE `category` (
`id` INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`category` VARCHAR(50) NOT NULL , 
`parent` INT(4) NOT NULL 
) 

INSERT INTO `category` VALUES (1, 'MCA', 9); 
INSERT INTO `category` VALUES (2, 'M Tech', 9); 
INSERT INTO `category` VALUES (3, 'B Tech', 9); 
INSERT INTO `category` VALUES (4, 'BioTech', 9); 
INSERT INTO `category` VALUES (5, 'InfoTech', 9); 
INSERT INTO `category` VALUES (6, 'Chemical', 10); 
INSERT INTO `category` VALUES (7, 'Indus', 10); 
INSERT INTO `category` VALUES (8, 'Physics', 10); 
INSERT INTO `category` VALUES (9, 'Information Science', 0); 
INSERT INTO `category` VALUES (10, 'Others Science', 0); 

我需要的类别和子类别方面获得的值的单个查询。第三个值为零,其他类别为子类别。

我需要输出为树状结构这样,

结果是:

Information Science 
    MCA 
    M Tech 
    B Tech 
    BioTech 
    InfoTech 
Others Science 
    Chemical 
    Indus 
    Physics 
+0

这是措辞有点笨拙,也许你需要输出的一个例子将是有用的? – Farthingworth 2010-05-22 10:12:15

回答

1

也许这是你想要什么:

SELECT 
    T1.category AS category, 
    T2.category AS subcategory 
FROM category T1 
JOIN category T2 
ON T1.id = T2.parent 
 
category    subcategory 
'Information Science' 'MCA' 
'Information Science' 'M Tech' 
'Information Science' 'B Tech' 
'Information Science' 'BioTech' 
'Information Science' 'InfoTech' 
'Others Science'  'Chemical' 
'Others Science'  'Indus' 
'Others Science'  'Physics' 

这是假设只有你在你的层次结构中有两个层次。

+0

可能不会返回没有子类别 – 2010-05-22 13:03:56

2

Mysql有一个nice article for you。 虽然个人,我会去物化路径

+0

的类别将检查并告诉此... – Karthik 2010-07-15 04:22:32