经典结构 - 自连DB表,列表

时间:2012-08-15 12:50:10

标签: 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!

1 个答案:

答案 0 :(得分:0)

我不确定你怎么能用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。

唯一的问题是查询返回大量数据。