λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λͺ©λ‘μ΄ μ—†μŠ΅λ‹ˆλ‹€.

[MySQL] ν•˜μœ„(μžμ‹) μ‹œν€€μŠ€λ‘œ μƒμœ„(λΆ€λͺ¨) μ‹œν€€μŠ€λ₯Ό μ ‘κ·Όν•  순 μ—†μ„κΉŒ?

πŸ›’ DB/MySQL

    μ’…μ’… λŒ“κΈ€κ³Ό 같은 ꡬ쑰둜 λ˜μ–΄ μžˆλŠ” νŽ˜μ΄μ§€λ₯Ό κ°œλ°œν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이번 ν¬μŠ€νŒ…μ˜ κ³„κΈ°λŠ” μΉ΄ν…Œκ³ λ¦¬λ₯Ό κ΅¬μ„±ν•œ DBμ—μ„œ ν•˜μœ„ μΉ΄ν…Œκ³ λ¦¬ μ‹œν€€μŠ€ ν•˜λ‚˜λ‘œ λͺ¨λ“  μƒμœ„ μΉ΄ν…Œκ³ λ¦¬λ₯Ό ν•œλ²ˆμ— κ°€μ Έμ˜€κ³  싢은 생각에 ꡬ글링을 μ‹œμž‘ν•˜κ²Œ λ˜μ—ˆκ³  쒋은 방법을 μ°Ύμ•„μ„œ μ •λ¦¬ν•˜κ³ μž ν¬μŠ€νŒ…μ„ ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

     


     

    WITH RECURSIVE (MySQL)

    WITH RECURSIVE TTR (TECHCATEID, ORD_LEVEL, TECHCATEPID) AS
    (
        SELECT TECHCATEID, ORD_LEVEL, TECHCATEPID
        FROM	TCD_TECHCATE_REL
        WHERE TECHCATEID = #{techcateid}
        UNION ALL
        SELECT R.TECHCATEID, R.ORD_LEVEL, R.TECHCATEPID
        FROM	TCD_TECHCATE_REL R
        INNER JOIN TTR ON R.TECHCATEID = TTR.TECHCATEPID
    )
    SELECT ORD_LEVEL, TECHCATEID FROM TTR R ORDER BY TECHCATEID ASC;

     

    Spring, Mybatis ν™˜κ²½μ—μ„œ κ΅¬μ„±λœ μΏΌλ¦¬μž…λ‹ˆλ‹€. μ–Έλœ»λ³΄λ©΄ λ³΅μž‘ν•΄ λ³΄μ΄μ§€λ§Œ techcateid(ν•˜μœ„ μΉ΄ν…Œκ³ λ¦¬ μ‹œν€€μŠ€)만 νŒŒλΌλ―Έν„°λ‘œ λ°›μ•„μ„œ ν•΄λ‹Ή ν•˜μœ„ μΉ΄ν…Œκ³ λ¦¬μ˜ λͺ¨λ“  μƒμœ„ μΉ΄ν…Œκ³ λ¦¬λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλŠ” μΏΌλ¦¬μž…λ‹ˆλ‹€. WITH RECURSIVEλŠ” 처음 μ ‘ν•˜κ²Œ 된 문법인데 μƒμ†Œν•˜μ§€λ§Œ μ•„μ£Ό μœ μš©ν•¨μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.