Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在SQL中搜索子节点_Php_Mysql_Sql - Fatal编程技术网

Php 如何在SQL中搜索子节点

Php 如何在SQL中搜索子节点,php,mysql,sql,Php,Mysql,Sql,假设我有一个名为Tags的表,它有一个id列m name列和一个parent_id列。许多标记都使用parent_id列嵌套。如何检查标记A是否将标记B作为非直接子项 之前,我选择了所有具有当前标记的父元素id的标记,然后得到结果并对任何子元素重复 如何更有效地获取与搜索匹配且是直接子项或非直接子项的所有标记 谢谢你的帮助, Jason而不是在评论中讨论。。。以下是我的建议: 如果您想坚持使用MySQL,但可以使用数据库的结构,那么Bill Karwin建议的“”模式绝对是可行的。它允许您将数

假设我有一个名为Tags的表,它有一个id列m name列和一个parent_id列。许多标记都使用parent_id列嵌套。如何检查标记A是否将标记B作为非直接子项

之前,我选择了所有具有当前标记的父元素id的标记,然后得到结果并对任何子元素重复

如何更有效地获取与搜索匹配且是直接子项或非直接子项的所有标记

谢谢你的帮助,
Jason

而不是在评论中讨论。。。以下是我的建议:

  • 如果您想坚持使用MySQL,但可以使用数据库的结构,那么Bill Karwin建议的“”模式绝对是可行的。它允许您将数据保存在平面表设计中,同时将多级树结构抽象到单独的表中,以便于数据提取

  • 如果您想尝试不同的关系数据库系统,那么您可以尝试Microsoft免费提供的系统。在完全公开的情况下,我不使用这个,所以我不知道排除了什么功能(而且我确信有些东西是免费的,否则你不会免费得到它)。因此,请进行一些研究,以确保
    递归
    CTEs
    )可用。如果是,那么您可以使用PinalDave的使用CTE的递归SQL技术

  • 否则,如果您认为只有少数几个级别可以使用,则可以使用和硬编码级别数


你会想这么做:@DanK比我先这么做,但是如果你不能重组你的表结构,没有比你已经在做的更好的选择了。也许这些对你有用。(我一直用PHP进行XML解析)。@DanK如果需要,我可以用不同的结构构建数据库。只是为了确保,这有一个孩子的动态层数的能力?谢谢不,这些级别是硬编码的,不是真正的递归查询。我更多地使用Oracle和SQL Server,它们可以进行递归查询,但根据本文,MySQL不提供此功能: