因此,我希望category (x)
在我的网站上提供样式产品数量。
我目前正在使用 MySQL。
我的类别表如下所示:
Categories (Id, TreeLeft, TreeRight, Level, Name)
- 'Level' 是节点深度。
输入的类别如下所示:
我的项目 > 类别关系表如下所示:
ItemCategories (ItemId, CategoryId)
假设我有:
- “TUBE”下的 1 项
- “LCD”下的 2 个项目
- 'FLASH' 下的 1 项
- “2 WAY-RADIO”下的 1 项
我怎样才能最有效地查询我的项目(大数据库)+类别(4000个数据库),以产生:
电子产品 (5) - 电视 (3) - 管 (1) - 液晶显示器 (2) - 便携式电子产品 (2) - MP3 播放器 (1) - 闪光 (1) - 2 路收音机 (1)
注意只返回那些包含产品的类别,并正确地将它们计算在树上。
非常感谢任何帮助。
编辑:在本地重新创建环境的数据库代码:
如果不存在“类别”,则创建表( `Id` int(11) NOT NULL auto_increment, `TreeLeft` mediumint(7) NOT NULL, `TreeRight` mediumint(7) NOT NULL, `Level` tinyint(3) NOT NULL, `名称` varchar(255) NOT NULL, 唯一键`Id`(`Id`), KEY `TreeLeft` (`TreeLeft`) ) 引擎=MyISAM 默认字符集=latin1 AUTO_INCREMENT=11 ; 插入`Categories`(`Id`、`TreeLeft`、`TreeRight`、`Level`、`Name`)值 (1, 1, 20, 1, '电子学'), (2, 2, 9, 2, '电视'), (3, 10, 19, 2, '便携式电子产品'), (4, 3, 4, 3, '管'), (5, 5, 6, 3, 'LCD'), (6, 7, 8, 3, '等离子'), (7, 11, 14, 3, 'MP3 播放器'), (8, 15, 16, 3, 'CD 播放器'), (9, 11, 14, 3, '2 Way Radios'), (10、12、13、4,“闪光”); 如果不存在`ItemCategories`,则创建表( `CategoryId` int(11) NOT NULL, `ItemId` int(11) 非空, KEY `CategoryId` (`CategoryId`) ) 引擎=MyISAM 默认字符集=latin1; 插入`ItemCategories`(`CategoryId`,`ItemId`)值 (4, 3442), (5, 3441), (5, 3456), (9, 5343), (10, 5423);