gpt4 book ai didi

mysql - 计算嵌套树下项目的最有效方法

转载 作者:可可西里 更新时间:2023-11-01 08:49:58 26 4
gpt4 key购买 nike

因此,我希望在我的网站上提供一个category (x) 样式的产品计数。

我目前正在使用 MySQL。

我的类别表如下所示:类别(Id、TreeLeft、TreeRight、Level、Name) - “Level”是节点深度。

输入的类别如下所示: enter image description here

My Item > Categories 关系表如下所示: ItemCategories(ItemId、CategoryId)

假设我有:

  • “TUBE”下的 1 项
  • “LCD”下的 2 项
  • “FLASH”下的 1 项
  • “2 WAY-RADIO”下的 1 项

我怎样才能最有效地查询我的项目(大数据库)+类别(4000 数据库),以产生:

Electronics (5)  - Televisions (3)   - Tube (1)   - LCD (2) - Portable Electronics (2)   - MP3 Players (1)    - Flash (1)   - 2 Way Radios (1)

注意只返回那些包含产品的类别,并正确地在树中对它们进行计数。

非常感谢任何帮助。

编辑:数据库代码以在本地重新创建环境:

CREATE TABLE IF NOT EXISTS `Categories` (  `Id` int(11) NOT NULL auto_increment,  `TreeLeft` mediumint(7) NOT NULL,  `TreeRight` mediumint(7) NOT NULL,  `Level` tinyint(3) NOT NULL,  `Name` varchar(255) NOT NULL,  UNIQUE KEY `Id` (`Id`),  KEY `TreeLeft` (`TreeLeft`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;INSERT INTO `Categories` (`Id`, `TreeLeft`, `TreeRight`, `Level`, `Name`) VALUES(1, 1, 20, 1, 'Electronics'),(2, 2, 9, 2, 'Television'),(3, 10, 19, 2, 'Portable Electronics'),(4, 3, 4, 3, 'Tube'),(5, 5, 6, 3, 'LCD'),(6, 7, 8, 3, 'Plasma'),(7, 11, 14, 3, 'MP3 Players'),(8, 15, 16, 3, 'CD Players'),(9, 11, 14, 3, '2 Way Radios'),(10, 12, 13, 4, 'Flash');CREATE TABLE IF NOT EXISTS `ItemCategories` (  `CategoryId` int(11) NOT NULL,  `ItemId` int(11) NOT NULL,  KEY `CategoryId` (`CategoryId`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;INSERT INTO `ItemCategories` (`CategoryId`, `ItemId`) VALUES(4, 3442),(5, 3441),(5, 3456),(9, 5343),(10, 5423);

最佳答案

请参阅 Mike Hillyer 关于此主题的经典文章中标题为在嵌套集中聚合函数的小节,网址为 Managing Hierarchical Data in MySQL

关于mysql - 计算嵌套树下项目的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com