ORM: Sequelize: MySQL쿼리를 Sequelize.js 쿼리로 바꾸고싶습니다.

조회수 954회

쿼리는 다음과 같이 테이블 하나로 셀프조인한 문장입니다.

SELECT cat.cat_id, cat.cat_name, sub_cat.cat_id, sub_cat.cat_name
FROM Categories AS cat
LEFT JOIN Categories AS sub_cat
ON sub_cat.parent = cat.cat_id;

공식문서봐도 컬럼에 별명지정하는건 나와도 테이블에 별명 지정하는건 안나오네요 ㅠㅠ 도움이 필요합니다 ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 그러니까 하위카테고리가 자기 자신인 카테고리들을 찾아오는 거죠? 알아보니 Sequelize에는 include 옵션이라는 게 있네요. 이게 혹시 힌트가 될지 모르겠습니다.

    // 테스트 안해본 코드입니다. 작동 안할 수 있습니다.
    models.categories.find({
        include: [
            {
                model: models.categories,
                as: 'sub_cat'
            }
        ],
        where: {
            cat_id: sub_cat.parent
        }
    }).then(function(result) { /* 어쩌구... */ });
    

    정 안되면 날쿼리 날리셔도 될것 같기는 하네요.

    • 그리고 .find()메소드는 지금 deprecated 메시지가 뜹니다. 참고하실 분들은 .findAll()을 데이터 1개만 가져오시려면 .findOne()메소드를 사용하시길 바랍니다. 저렇게하면 ON절 밑에 WHERE절이 추가되더군요. 답변 확인하기 전에 해결해버렸습니다ㅎㅎ 도와주셔서 감사합니다. 알 수 없는 사용자 2018.12.26 19:55

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)