56,687
社区成员
发帖
与我相关
我的任务
分享
SET NAMES GBK;
CREATE TABLE `category`
(
`ID` smallint(5) unsigned NOT NULL auto_increment,
`PID` smallint(5) unsigned NOT NULL default '0 ',
`tree` text collate utf8_unicode_ci,
`name` varchar(20) collate utf8_unicode_ci NOT NULL default ' ',
PRIMARY KEY (`ID`),
UNIQUE KEY `PID` (`PID`,`name`),
KEY `tree` (`tree`(200))
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
insert into category(pid,tree,name) values
(0,'1_','新闻'),
(1,'1_2_','国内'),
(1,'1_3_','国际'),
(2,'1_2_4_','北京'),
(4,'1_2_4_5_','朝阳区'),
(2,'1_2_6_','上海'),
(3,'1_3_7_','美国');
SELECT ID, PID, name, tree AS tr,
(
SELECT COUNT(*) FROM category WHERE tree LIKE CONCAT(REPLACE(tr, '_ ', '\_ '), '% ')
)-1 AS SubCategories FROM category;
结果:
query result(7 records)
ID PID name tr SubCategories
1 0 新闻 1_ -1
2 1 国内 1_2_ -1
3 1 国际 1_3_ -1
4 2 北京 1_2_4_ -1
5 4 朝阳区 1_2_4_5_ -1
6 2 上海 1_2_6_ -1
7 3 美国 1_3_7_ -1
CREATE VIEW view_category AS
SELECT ID, PID, name, tree AS tr,
(
SELECT COUNT(*) FROM category WHERE tree LIKE CONCAT(REPLACE(tr, '_ ', '\_ '), '% ')
)-1 AS SubCategories FROM category;
select * from view_category;
结果:
query result(7 records)
ID PID name tr SubCategories
1 0 新闻 1_ -1
2 1 国内 1_2_ -1
3 1 国际 1_3_ -1
4 2 北京 1_2_4_ -1
5 4 朝阳区 1_2_4_5_ -1
6 2 上海 1_2_6_ -1
7 3 美国 1_3_7_ -1