집 >데이터 베이스 >MySQL 튜토리얼 >단일 쿼리를 사용하여 MySQL 데이터베이스에서 재귀 카테고리를 검색하는 방법은 무엇입니까?
단일 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!