asp.net의 SQL 데이터 소스에서 계층 적 메뉴를 만드는 데 사용하려고합니다. asp.net에서 메뉴를 쉽게 만들 수 있도록 테이블을 정렬하는 데 문제가 있습니다. 누구나 아이디어가있는 경우 더 좋은 방법이있을 수 있습니다.SQL을 사용하여 asp.net의 계층 적 메뉴 만들기
현재이 모양의 표가 있으며 (예제 데이터 구성) 루트에만 폴더가 있고 폴더에만 폴더가있을 수 있습니다. IDS :
+-------------------+---------------------+-----------+-----------+
| Name_FolderorItem | Parent_Folder | Id_Folder | Menuplace |
+-------------------+---------------------+-----------+-----------+
| c FOLDER | ROOT | c_FOLDER | 1 |
| d FOLDER | j_FOLDER | d_FOLDER | 2 |
| a FOLDER | ROOT | a_FOLDER | 1 |
| j FOLDER | ROOT | j_FOLDER | 1 |
| f FOLDER | ROOT | f_FOLDER | 1 |
| r FOLDER | f_FOLDER | r_FOLDER | 2 |
| i FOLDER | d_FOLDER | i_FOLDER | 3 |
| a ITEM | j_FOLDER | | 2 |
| d ITEM | c_FOLDER | | 2 |
| z ITEM | f_FOLDER | | 2 |
| r ITEM | d_FOLDER | | 3 |
+-------------------+---------------------+-----------+-----------+
내가 주문하는 경우는 각각의 깊은 수준에 다음 알파벳 첫 번째 수준에 알파벳되는이를 얻을 수 있다고 생각 해요 :
+-------------------+---------------------+-----------+-----------+
| Name_FolderorItem | Parent_Folder | Id_Folder | Menuplace |
+-------------------+---------------------+-----------+-----------+
| a FOLDER | ROOT | a_FOLDER | 1 |
| c FOLDER | ROOT | c_FOLDER | 1 |
| d ITEM | c_FOLDER | | 2 |
| f FOLDER | ROOT | f_FOLDER | 1 |
| r FOLDER | f_FOLDER | r_FOLDER | 2 |
| z ITEM | f_FOLDER | | 2 |
| j FOLDER | ROOT | j_FOLDER | 1 |
| a ITEM | j_FOLDER | | 2 |
| d FOLDER | j_FOLDER | d_FOLDER | 2 |
| i FOLDER | d_FOLDER | i_FOLDER | 3 |
| r ITEM | d_FOLDER | | 3 |
+-------------------+---------------------+-----------+-----------+
그럼 내가 얻을 수있는 목록보기를 사용할 수 있습니다 이 메뉴 구조 :
a FOLDER
c FOLDER
- d ITEM
f FOLDER
- r FOLDER (r FOLDER is located in f folder)
- z ITEM
j FOLDER
- a item
- d FOLDER
- - i FOLDER
- - r ITEM
폴더를 가져 와서 그 레벨의 다른 폴더/항목 대신 폴더의 내용을 우선 순위 지정하는 데 필요한 SQL을 알아낼 수 없습니다. 사전에 내가 감사하겠습니다이 주문을 허용 것이 SQL 문, 덕분에 어떤 아이디어가 있다면
는
편집 : 여기 은 도움말
주셔서 감사합니다 내가 지금 사용하고 쿼리입니다SELECT *
FROM table
START WITH Parent_Folder LIKE 'ROOT'
CONNECT BY PRIOR Id_Folder LIKE Parent_folder;
+1 아마도 하나의 검색어로 모든 어린이를 표시하기위한 계층 적 CTE를 언급하고 싶을 수도 있습니다. http://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL –
두 분 모두에게 감사 드리며, 저는 이전에 개별 검색어로이를 수행하는 방법을 알고있었습니다. ,하지만 Fabian의 정확히 내가 뭘 필요했는지 대답을 내 질문을 편집 할 것입니다. – user3220901
전체 트리를 한 번에 표시해야하는 경우 왜 XML 파일보다는 데이터베이스에 저장할 것이라고 궁금해? xml은 관리하기가 훨씬 쉽습니다. 트리가 매우 큰 경우 (예 : 깊이가 최소 8 인 1000 개 이상의 노드) 매우 느립니다. – kevin