Mysql 类别和子类别
我找到了本教程,我想使用所描述的方法,因为它比递归调用更好,但我有两个问题: 我怎样才能知道最深的层次?在某些页面中,我可能有2个,而在另一个页面中,我可能有20个。我是否遗漏了什么,或者只有在您知道运行时之前的最深级别时才能使用此方法 我有一个多语言数据库设计,如何更改查询以使用下面的表设计:Mysql 类别和子类别,mysql,sql,recursion,parent-child,Mysql,Sql,Recursion,Parent Child,我找到了本教程,我想使用所描述的方法,因为它比递归调用更好,但我有两个问题: 我怎样才能知道最深的层次?在某些页面中,我可能有2个,而在另一个页面中,我可能有20个。我是否遗漏了什么,或者只有在您知道运行时之前的最深级别时才能使用此方法 我有一个多语言数据库设计,如何更改查询以使用下面的表设计: 你的帮助将得到极大的赞赏。 你可能想考虑研究“嵌套集合”。这是一个很好的开始。此外,如果您使用的是ORM原则,则支持嵌套集功能。您可能需要提供该链接的概述。它有点长,大多数人在回答您的问题之前都不想阅读
<>你的帮助将得到极大的赞赏。 你可能想考虑研究“嵌套集合”。这是一个很好的开始。此外,如果您使用的是ORM原则,则支持嵌套集功能。您可能需要提供该链接的概述。它有点长,大多数人在回答您的问题之前都不想阅读它。您是否正在寻找一种完全在数据库中编码的解决方案?此外,您参考的教程假定深度已知,结果集中的列数取决于此深度。如果深度未知,则可能必须只返回两列父/子ID,并让使用代码处理动态深度。如果你能说明你在找什么,我也许能帮上更多的忙。
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`position` int(11) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id_fk` (`parent_id`),
CONSTRAINT `categories_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `categories` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `categories_locale` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`slug` varchar(100) NOT NULL DEFAULT '',
`name` varchar(40) NOT NULL DEFAULT '',
`category_id` int(11) NOT NULL,
`locale_id` smallint(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;