순서와 재귀 결합

알리 알 모센

페이지 목록이있는 테이블이 있고 일부는 상위 페이지가 있습니다. 이 페이지는 매우 임의의 순서로되어 있습니다. Page_Order에 의해 정렬 된 모든 페이지를 선택하기 위해 재귀 조인 문을 만들어야합니다. 여기서 부모는 각각 그 뒤에 자식 페이지가 나열됩니다.

표 : 페이지

Page_ID | Page_Name | Page_Parent | Page_Order
1       | User      | 2           | 2
2       | Admin     | NULL        | 2
3       | Pages     | 2           | 1
4       | Home      | NULL        | 1
5       | About     | NULL        | 3
6       | Contact   | 5           | 1

다음 순서로 선택하고 싶습니다 (상위 페이지를 순서대로 정렬하고 그 뒤에 하위 페이지를 순서대로 지정).

Page_ID | Page_Name | Page_Parent | Page_Order
4       | Home      | NULL        | 1
2       | Admin     | NULL        | 2
3       | Pages     | 2           | 1
1       | User      | 2           | 2
5       | About     | NULL        | 3
6       | Contact   | 5           | 1
스티브

구체적으로 요청한 것은 아니지만 원하는 것을 달성하는 방법이 있습니다. 이것은 당신에게 제한된 수의 자식 페이지를 제한하고 재귀 적이 지 않습니다.

; WITH cte AS (
  SELECT 1 Page_Id, 'User' Page_Name, 2 Page_Parent, 2 Page_Order union 
  SELECT 2, 'Admin   ', NULL, 2 union 
  SELECT 3, 'Pages   ', 2   , 1 union 
  SELECT 4, 'Home    ', NULL, 1 union 
  SELECT 5, 'About   ', NULL, 3 union 
  SELECT 6, 'Contact ', 5   , 1 
)

SELECT  Page_Id, Page_Name, Page_Parent, Page_order, x = CAST(Page_order  AS DECIMAL(18,2))
FROM    cte
WHERE   Page_Parent IS NULL
UNION
SELECT  child.Page_Id, child.Page_Name, child.Page_Parent, child.Page_order, X = CAST(parent.Page_order  AS DECIMAL(18,2)) + ISNULL(CAST(child.Page_order  AS DECIMAL(18,2))/10000, 0)
FROM    cte parent
        LEFT OUTER JOIN cte child 
                ON child.Page_Parent = parent.Page_Id
WHERE child.Page_Id IS NOT NULL
ORDER BY x

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Sympy에서 재귀 해결

분류에서Dev

Prolog에서 재귀 적 목표의 결과에 원자 결합

분류에서Dev

postgresql에서 simple with 문과 재귀 문을 결합하는 방법

분류에서Dev

Prolog 재귀 순서가 중요합니까?

분류에서Dev

재귀 React.Component에서 Redux 연결

분류에서Dev

재귀 합계

분류에서Dev

R에서 두 목록을 재귀 적으로 결합 또는 병합

분류에서Dev

PHP에서 배열을 재귀 적으로 결합하는 방법

분류에서Dev

순서가 지정된 연결 목록에 재귀 적으로 추가

분류에서Dev

프롤로그-재귀에서 인쇄 순서와 혼동

분류에서Dev

주어진 길이를 가진 제곱합의 재귀 찾기 순서

분류에서Dev

순환 연결 목록을 재귀 적으로 인쇄

분류에서Dev

단순 재귀와 다중 재귀 구별

분류에서Dev

왼쪽 재귀와 탐욕스러운 '?'로 파서 규칙 우선 순위를 어떻게 선택합니까? 운영자?

분류에서Dev

Redshift의 재귀 합

분류에서Dev

재귀적인 쿼리 결합

분류에서Dev

Java와 재귀를 사용하여 "knapsack"문제를 해결하려고합니다.

분류에서Dev

AspectJ-왜 cflow가 && (aspectJ 교차점)와 결합되지 않았을 때 무한 재귀로 이어지는가?

분류에서Dev

왼쪽 재귀와 오른쪽 재귀가 동일한 구문 분석 트리를 생성합니까?

분류에서Dev

AngularJS-재귀와 HTTP 및 사용자 지정 약속 혼합

분류에서Dev

C에서 재귀 적으로 연결된 큐에서 제거

분류에서Dev

재귀 쿼리 결과에서 테이블 만들기 (with 문)

분류에서Dev

jQuery 코드에서 재귀 문제를 해결하는 방법

분류에서Dev

재귀 방법에서 결과 목록 가져 오기

분류에서Dev

연결 목록의 "재귀"listToString () 메서드

분류에서Dev

결과는 재귀에서 어떻게 생성됩니까?

분류에서Dev

C에서 재귀 적으로 연결된 목록 반전

분류에서Dev

C-재귀 함수에서 중복 결과 제거

분류에서Dev

파이썬에서 이중 재귀의 결과

Related 관련 기사

  1. 1

    Sympy에서 재귀 해결

  2. 2

    Prolog에서 재귀 적 목표의 결과에 원자 결합

  3. 3

    postgresql에서 simple with 문과 재귀 문을 결합하는 방법

  4. 4

    Prolog 재귀 순서가 중요합니까?

  5. 5

    재귀 React.Component에서 Redux 연결

  6. 6

    재귀 합계

  7. 7

    R에서 두 목록을 재귀 적으로 결합 또는 병합

  8. 8

    PHP에서 배열을 재귀 적으로 결합하는 방법

  9. 9

    순서가 지정된 연결 목록에 재귀 적으로 추가

  10. 10

    프롤로그-재귀에서 인쇄 순서와 혼동

  11. 11

    주어진 길이를 가진 제곱합의 재귀 찾기 순서

  12. 12

    순환 연결 목록을 재귀 적으로 인쇄

  13. 13

    단순 재귀와 다중 재귀 구별

  14. 14

    왼쪽 재귀와 탐욕스러운 '?'로 파서 규칙 우선 순위를 어떻게 선택합니까? 운영자?

  15. 15

    Redshift의 재귀 합

  16. 16

    재귀적인 쿼리 결합

  17. 17

    Java와 재귀를 사용하여 "knapsack"문제를 해결하려고합니다.

  18. 18

    AspectJ-왜 cflow가 && (aspectJ 교차점)와 결합되지 않았을 때 무한 재귀로 이어지는가?

  19. 19

    왼쪽 재귀와 오른쪽 재귀가 동일한 구문 분석 트리를 생성합니까?

  20. 20

    AngularJS-재귀와 HTTP 및 사용자 지정 약속 혼합

  21. 21

    C에서 재귀 적으로 연결된 큐에서 제거

  22. 22

    재귀 쿼리 결과에서 테이블 만들기 (with 문)

  23. 23

    jQuery 코드에서 재귀 문제를 해결하는 방법

  24. 24

    재귀 방법에서 결과 목록 가져 오기

  25. 25

    연결 목록의 "재귀"listToString () 메서드

  26. 26

    결과는 재귀에서 어떻게 생성됩니까?

  27. 27

    C에서 재귀 적으로 연결된 목록 반전

  28. 28

    C-재귀 함수에서 중복 결과 제거

  29. 29

    파이썬에서 이중 재귀의 결과

뜨겁다태그

보관