by 버드나무 [MySQL] MySQL start with 오라클 쿼리변경 [2020.05.25 16:59:55]
안녕하세요.
쿼리 바꾸는게 너무 힘이 들어서 부탁하러 왔습니다.
에효~ 도와주세요;;;
파일첨부에 파일은 sub쿼리 안에있는걸 mysql에서 돌린값입니다.
아래에 오라클쿼리 확인하시고 mysql쿼리로 바꿔주시면 대단히 감사하겠습니다.
시간이 걸리시겠지만 제발좀;;;
첨부파일은 엑셀에서 보실수 있습니다.
현재 쿼리----------------------------------------
SELECT
A.MENU_ID
, A.HIGH_MENU_ID
, A.PROGRAM_YN
, A.POPUP_YN
, A.LANGUAGE_CD
, A.DISPLAY_NM
, A.DISPLAY_ORDER
, A.NODE_DEPTH
, A.CONT
, A.PROGRAM_PATH
, A.DISPLAY_YN
, A.ORI_MENU_ID
, (SELECT COUNT(*) FROM F_MENU X WHERE X.PRISM_ID = A.PRISM_ID AND X.SYSTEM_DIV = A.SYSTEM_DIV AND X.HIGH_MENU_ID=A.MENU_ID)AS CHILD_CNT
, CASE WHEN A.PROGRAM_YN = 'N' THEN 0 WHEN A.PROGRAM_YN = 'Y' AND A.POPUP_YN = 'N' THEN 1 ELSE 2 END AS ICON_NO
FROM
(
SELECT
MENU_ID
, HIGH_MENU_ID
, PROGRAM_YN
, POPUP_YN
, 'KR' AS LANGUAGE_CD
, (SELECT DISPLAY_NM FROM F_MENU_DISPLAY WHERE PRISM_ID = A.PRISM_ID AND SYSTEM_DIV = A.SYSTEM_DIV AND MENU_ID = A.MENU_ID AND LANGUAGE_CD = 'KR') AS DISPLAY_NM
, DISPLAY_ORDER
, NODE_DEPTH
, CONT
, PROGRAM_PATH
, DISPLAY_YN
, MENU_ID AS ORI_MENU_ID
, PRISM_ID
, SYSTEM_DIV
FROM F_MENU A
WHERE A.PRISM_ID = 'AML'
AND A.SYSTEM_DIV = 'WMPPG'
) A
START WITH A.NODE_DEPTH = '1'
CONNECT BY PRIOR A.MENU_ID = A.HIGH_MENU_ID
ORDER SIBLINGS BY A.DISPLAY_ORDER
--------------------------------------------------
WITH RECURSIVE t AS ( SELECT a.prism_id , a.system_div , a.menu_id , a.high_menu_id , a.program_yn , a.popup_yn , a.display_order , a.node_depth , a.cont , a.program_path , a.display_yn , CAST(LPAD(IFNULL(a.display_order, 0), 2, '0') AS VARCHAR(100)) AS v_ord FROM f_menu a WHERE a.prism_id = 'AML' AND a.system_div = 'WMPPG' AND a.node_depth = '1' UNION ALL SELECT a.prism_id , a.system_div , a.menu_id , a.high_menu_id , a.program_yn , a.popup_yn , a.display_order , a.node_depth , a.cont , a.program_path , a.display_yn , CONCAT(b.v_ord, LPAD(IFNULL(a.display_order, 0), 2, '0')) AS v_ord FROM f_menu a INNER JOIN t b ON a.prism_id = b.prism_id AND a.system_div = b.system_div AND a.high_menu_id = b.menu_id ) SELECT * FROM t ORDER BY v_ord ;
신경써주셔서 대단히 감사합니다.
그런데 왠일인지 오류가 나서....
혼자 분석해서 하려고 해도 이해를 못해서 고수님들 붙들고 부탁드리는 수밖에 없네요;;;
모쪼록 꾸벅꾸벅;;; 부탁드립니다.
, CAST(LPAD(IFNULL(a.display_order, 0), 2, '0') AS VARCHAR(100)) AS v_ord << 이부분에서 오류납니다.
오류내용---------------------
SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(100)) AS v_ord
FROM f_menu a
WHERE a.prism_id = 'AML'
AND a.' at line 15
-----------------------------------------------
해당 라인과 union all 아래에 동일한 라인 지우고 테스트해봤는데 그래도 오류납니다.
오류내용-----------------------------
SQL Error [1054] [42S22]: Unknown column 'a.ori_menu_id' in 'field list'
-----------------------------