2012-08-15 34 views
1

我有以下几点:经典结构 - 自连接数据库表格,列表

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!

+1

是的,它是MySQL,RDBMS在处理树状结构方面不太好 - 但这正是你在这里所得到的。我建议检查[本文](http://www.sqlsummit.com/AdjacencyList.htm),以获得对您可能面临的潜在问题的相当好的解释,以及潜在的解决方法。提示:DB重新设计即将到来。 – raina77ow 2012-08-15 12:56:25

+1

尝试使用Closure模型而不是djacency List模型。 – 2012-08-15 12:57:20

回答

0

我不太确定你如何使用MySQL。我认为你最好的选择是递归地获取所有东西。

​​

您应该改变它以便它使用PDO。

唯一的问题是查询返回的数据太多。