ORDER SIBLINGS BY : 특정 컬럼에 대한 Order by를 실행(조회된 데이터에 대해)
CONNECT BY : 상위 코드와 하위 코드를 이용하여 Tree 형태로 보여줄수 있는 것
<select>
SELECT
department_id AS ID,
department_name AS TEXT,
parent_id AS PARENT_ID,
LEVEL AS LVL
FROM departments
START WITH parent_id IS NULL
CONNECT BY PRIOR department_id = parent_id
ORDER SIBLINGS BY department_name
</select>
출처 : thebook.io/006696/part01/ch07/01/03/
위와같은 형식으로 쿼리결과를 만들어 json List형태로 view에 보내준다
<script>
function getTreeData(array){
var map = {};
for(var i = 0; i < array.length; i++){
var obj = {"id" : array[i]['ID'], "value" : array[i]['TEXT'] , "LVL" : array[i]['LVL']};
obj.items = [];
map[obj.id] = obj;
var parent = array[i]['PARENT_ID'] || '-';
if(!map[parent]){
map[parent] = {
items: []
};
}
map[parent].items.push(obj);
}
return map['-'].items;
}
</script>
그리고 위 function에 넣어주기만 하면 된다.
결과 :
function에서 값을 만들어 주기 전
function에서 값을 만들어 준 후