[javascript] SQL 계층형 쿼리를 JSONTree로 만들기

 

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에서 값을 만들어 준 후