본문 바로가기
MySql

MySQL Recursive categories with a single query?

by 베이스 공부 2020. 11. 19.
반응형

기사와 섹션이있는 웹 사이트가 있습니다. each sections can have a parent section, as much as they like 예를 들면 :

subject 1
 -subject 2 
 --subject 3
 -subject 4
 --subject 5
 --subject 6
 ---subject 7
subject 8
subject 9

기타..

이제 재귀 적으로 가져오고 싶습니다 .php와 mysql을 통해 수행하는 가장 효율적인 방법은 무엇입니까?

고급 Tnx.

 

해결 방법

 

트리가 너무 크지 않은 경우 몇 가지 영리한 참조를 사용하여 PHP에서 트리를 간단히 만들 수 있습니다.

$nodeList = array();
$tree     = array();

$query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
while($row = mysql_fetch_assoc($query)){
    $nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
}
mysql_free_result($query);

foreach ($nodeList as $nodeId => &$node) {
    if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
        $tree[] = &$node;
    } else {
        $nodeList[$node['parent']]['children'][] = &$node;
    }
}
unset($node);
unset($nodeList);

그러면 각 children -슬롯의 하위 항목이있는 $ tree 의 트리 구조가 제공됩니다.

우리는 상당히 큰 트리 (>> 1000 개 항목)로이 작업을 수행했으며 MySQL에서 재귀 쿼리를 수행하는 것보다 매우 안정적이며 훨씬 빠릅니다.

 

참조 페이지 https://stackoverflow.com/questions/3116330

 

 

반응형

댓글