단일 MySQL 쿼리로 재귀 카테고리 검색
웹사이트 콘텐츠를 구성하는 맥락에서 재귀 카테고리는 여러 수준의 계층 구조를 허용합니다. MySQL 데이터베이스에서 이러한 범주를 효율적으로 검색하려면 일반적으로 단일 쿼리가 사용됩니다.
MySQL은 CONNECT_BY_ROOT 연산자를 제공하여 데이터를 재귀적으로 선택할 수 있습니다. 다음 쿼리를 고려해 보세요.
SELECT category_id, name, parent FROM categories CONNECT BY ROOT parent ORDER BY LEVEL
이 쿼리는 테이블의 모든 범주를 검색하여 상위 열을 기반으로 계층적으로 연결합니다. LEVEL 함수는 각 행에 레벨을 할당하여 계층 내에서의 위치를 나타내며 최상위 카테고리의 레벨은 1입니다.
PHP에서 재귀 트리 구조를 구축하려면 쿼리 결과를 여기서 각 범주는 하위 속성이 있는 노드로 표시됩니다. 다음 예는 프로세스를 보여줍니다.
$nodeList = []; $tree = []; $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, ['children' => []]); } 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); // Return the tree structure return $tree;
이 PHP 코드는 카테고리 간의 계층 관계를 반영하는 다차원 배열을 구성합니다. 최상위 범주는 $tree 배열에 배치되고 해당 하위 항목은 해당 하위 배열 내에 중첩됩니다.
이 접근 방식은 노드에 대한 참조를 활용하므로 새 노드 개체를 만드는 것에 비해 메모리 사용량이 최소화됩니다. 또한 재귀적인 SQL 쿼리를 방지하여 대규모 트리 구조에 더욱 효율적입니다.
위 내용은 단일 쿼리를 사용하여 MySQL 데이터베이스에서 재귀 카테고리를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!