Mysql 经典结构-自连接数据库表,列表
我有以下资料:Mysql 经典结构-自连接数据库表,列表,mysql,sql,join,Mysql,Sql,Join,我有以下资料: ID NAME PAREN_ID 1 a null 2 b null 3 c 2 4 d 3 我想列出ID 4项及其所有父项,因此我想获得: 4 d 3 3 c 2 2 b null 我试过一些东西: SELECT * FROM categories c1 JOIN categories c2 ON c2.ID = c1.PARENT_ID; 但这不是一个好结果,即使我尝试过滤到ID 4,它也不会返回任何结果。 是MySQL 我真
ID NAME PAREN_ID
1 a null
2 b null
3 c 2
4 d 3
我想列出ID 4项及其所有父项,因此我想获得:
4 d 3
3 c 2
2 b null
我试过一些东西:
SELECT * FROM categories c1
JOIN categories c2 ON c2.ID = c1.PARENT_ID;
但这不是一个好结果,即使我尝试过滤到ID 4,它也不会返回任何结果。
是MySQL 我真的不确定如何使用MySQL实现这一点。我认为你最好的办法是递归地获取所有内容
function getCategories( $id ) {
$ret = array();
$cat = mysql_query( 'SELECT * FROM categories' );
$curid = $id;
do {
$ret[] = $cat[ $curid ];
$curid = $cat[ $curid ][ 'PARENT_ID' ];
} while ( $curid );
return $ret;
}
您应该对其进行修改,使其使用PDO。
唯一的问题是查询返回的数据太多。是的,它是MySQL,RDBMS在处理树状结构方面不是很好——但这正是您在这里看到的。我建议对你可能面临的潜在问题,以及解决这些问题的潜在方法,做一个很好的解释。提示:DB重新设计即将到来。请尝试使用闭包模型而不是邻接列表模型。