반응형
mariadb의 "With As"를 변경하는 다른 방법
WITH KPILibHier (kpilib_code,parent_code,kpi_name, depth, iscategory)
AS ( SELECT K.kpilib_code, K.parent_code, K.kpi_name_en, K.kpi_depth, K.iscategory
FROM TPMDPERIODKPILIB K
INNER JOIN TPMDPERIODKPI PK ON PK.period_code = K.period_code
UNION ALL
SELECT A.kpilib_code, A.parent_code, A.kpi_name_en, A.kpi_depth, A.iscategory
FROM TPMDPERIODKPILIB A
INNER JOIN KPILibHier AS B ON A.kpilib_code = B.parent_code )
SELECT DISTINCT Z.kpi_name AS libname, Z.kpilib_code AS libcode,
Z.parent_code AS pcode, Z.depth, Z.iscategory, PK.target
FROM KPILibHier Z
LEFT JOIN TPMDPERIODKPILIB KPI
ON KPI.kpilib_code = Z.kpilib_code
LEFT JOIN TPMDPERIODKPI PK
ON PK.period_code = KPI.period_code
ORDER BY Z.depth, Z.kpi_name
이건 내 암호입니다.SQL 서버에서 실행할 수 있지만 이제는 마리아드비를 사용해야 하고 마리아드비는 "WITH AS"를 사용하지 않습니다. 그렇다면 동일한 결과에 대해 이 코드를 변경할 수 있는 다른 방법이 있습니까?
보시다시피 CTE 내부에도 'INNER JOIN KPILIBHier'가 있어서 평소처럼 평범한 서브쿼리를 만들지 못했습니다.
CTE의 내용을 파생된 테이블로 옮기는 것만으로도 사용 가능한 것을 제공할 수 있습니다.뭐 그런 거..
SELECT DISTINCT Z.kpi_name AS libname, Z.kpilib_code AS libcode,
Z.parent_code AS pcode, Z.depth, Z.iscategory, PK.target
FROM
( SELECT K.kpilib_code, K.parent_code, K.kpi_name_en AS kpi_name, K.kpi_depth AS depth, K.iscategory
FROM TPMDPERIODKPILIB K
INNER JOIN TPMDPERIODKPI PK ON PK.period_code = K.period_code
UNION ALL
SELECT A.kpilib_code, A.parent_code, A.kpi_name_en, A.kpi_depth, A.iscategory
FROM TPMDPERIODKPILIB A
) z
INNER JOIN z AS B ON A.kpilib_code = B.parent_code
LEFT JOIN TPMDPERIODKPILIB KPI
ON KPI.kpilib_code = Z.kpilib_code
LEFT JOIN TPMDPERIODKPI PK
ON PK.period_code = KPI.period_code
ORDER BY Z.depth, Z.kpi_name
언급URL : https://stackoverflow.com/questions/32642962/any-other-ways-to-change-with-as-for-mariadb
반응형
'programing' 카테고리의 다른 글
오류: "삽입할 노드가 다른 문서 컨텍스트에 있습니다." (0) | 2023.11.02 |
---|---|
우커머스를 카트 URL에 추가 (0) | 2023.11.02 |
선언은 Swift 1.2의 '최종' 오류와 '동적' 오류 모두일 수 없습니다. (0) | 2023.11.02 |
linux/list.h의 macro의 container_뒤에 있는 이론적 근거 (0) | 2023.11.02 |
__sync_sync_sync_sync는 어떤 역할을 합니까? (0) | 2023.11.02 |