2009-09-15 3 views

답변

3

음, 데이터베이스 시스템은 동일한 결과 여러 가지 방법을 쿼리를 실행하지만, 여기에 무슨 일이 일어나고 있는지 이해하는 하나의 방법입니다 수 :

는 nested_category 테이블, 하나의 이름이 부모와 이름이 다른 2 장을 가지고 마디. ELECTRONICS라는 학부모의 행을 찾으십시오 (링크하는 기사는 하나만 있음을 나타냅니다). parent.lft에서 parent.rgt까지의 범위는 ELECTRONICS가있는 모든 노드에 트리의 상위 노드로 모든 깊이를 제공합니다.

node.lft로 정렬하면 하위 트리의 왼쪽에있는 pre-order traversal의 전자 노드가 먼저 나타납니다.

이를 이해하기 위해 간단한 예를 통해 걷기 쉬울 수 있습니다 : 우리는 부모로서 대신 전자의 텔레비전 선택하는 경우 :

'부모'설정 때문에 [parent.name의, 단 1 행이 = '있는 텔레비전']

{ name: "TELEVISIONS", lft: 2, rgt: 9 } 
{ name: "TUBE",  lft: 3, rgt: 4 } 
{ name: "LCD",   lft: 5, rgt: 6 } 
{ name: "PLASMA",  lft: 7, rgt: 8 } 
:

{ name: "TELEVISIONS", lft: 2, rgt: 9 } 

'노드'세트 node.lft (2) 사이 [만족 9] 우리는 상위에서 하나의 LFT/RGT 값을 대체 할 수 있기 때문에, 4 개 행이

그리고 알 수 있듯이 위의 4 행은 "lft"값으로 정렬되어 있으므로 쿼리를 만족하기 위해 이름 값을 취하면 완료됩니다.

+0

명확한 설명에 감사드립니다. :) – alimango

관련 문제