>  기사  >  데이터 베이스  >  다양한 수준으로 MySQL에서 계층적 하위 폴더를 재귀적으로 검색하는 방법은 무엇입니까?

다양한 수준으로 MySQL에서 계층적 하위 폴더를 재귀적으로 검색하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 17:11:30428검색

How to Recursively Retrieve Hierarchical Child Folders in MySQL with Varying Levels?

다양한 수준의 계층적 하위 폴더를 검색하는 재귀 MySQL 쿼리

중첩 폴더 또는 트리형 관계와 같은 계층적 데이터 구조를 관리하는 경우 , 모든 자녀와 잠재적인 후손을 찾는 것이 어려울 수 있습니다. 이 기사에서는 계층적 'Folder' 테이블을 재귀적으로 탐색하여 이러한 요구를 효과적으로 해결하는 MySQL 쿼리를 제시합니다.

이 예에 사용된 'Folder' 테이블에는 'idFolder', 'FolderName' 및 ' idFolderParent'는 부모-자식 관계를 나타냅니다. 목표는 단일 쿼리로 특정 'idFolder'에 대해 하위 폴더를 포함한 모든 하위 폴더를 가져오는 것입니다.

이전 솔루션이 직면한 과제 중 하나는 상위 폴더가 특정 폴더에 저장되지 않은 경우를 처리하는 것이었습니다. 데이터베이스에서 주문하세요. 이를 극복하기 위해 GROUP_CONCAT() 함수와 사용자 정의 변수를 사용하는 쿼리를 제안합니다.

쿼리:

SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
  SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder
  WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder
  JOIN (SELECT @pv:=5) tmp
) a;

이 쿼리는 다음과 같이 작동합니다.

  1. 대상 폴더의 'idFolder'로 사용자 정의 변수 @pv를 초기화합니다(이 경우 5).
  2. 내부 쿼리는 @pv를 상위로 포함하는 모든 하위 'idFolder' 값을 반복적으로 검색합니다.
  3. 결과는 그룹화되고 연결되어 쉼표로 구분되어 문자열을 형성합니다. 모든 하위 폴더와 하위 폴더의 'idFolder' 값을 포함합니다.

이 접근 방식을 사용하면 모든 하위 폴더와 하위 폴더가 하위 폴더는 계층 구조에서의 위치에 관계없이 검색되어 지정된 'idFolder' 값에 대한 포괄적인 목록을 제공합니다.

위 내용은 다양한 수준으로 MySQL에서 계층적 하위 폴더를 재귀적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.