2017-10-18 13 views
0

Sequelize로 같은 테이블에서 두 번 선택할 수 있습니까? 마지막으로 내가 대답을 발견했습니다동일한 테이블에서 MySQL select를 속행하십시오 (왼쪽 조인)

select b.*, a.parent_id 
from theSameTable as b left join theSameTable as a on b.parent_id = a.id 

가 여기 내 MySQL의 테이블 여기

enter image description here

내 Sequelize 코드

const db = await ec.sequelize.define(tableDb, { 
    id: { 
     type: ec.Sequelize.INTEGER.UNSIGNED, 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    url: ec.Sequelize.STRING(511), 
    url_hash: ec.Sequelize.STRING(32), 
    name: ec.Sequelize.STRING(511), 
    full_name: ec.Sequelize.STRING(511), 
    parent_id: ec.Sequelize.INTEGER(11).UNSIGNED, 
    cnt: ec.Sequelize.STRING(255), 
    chk: ec.Sequelize.INTEGER(1) 
}, { 
    indexes: [{ 
     unique: true, 
     fields: ['url_hash'] 
    }] 
}); 

await ec.sequelize.sync(); 
+0

그리고 당신은 sequelize에 자기 조인에 대해 인터넷 검색을 손쉽게 찾을 않았다

await ec.sequelize.sync(); 

후? – philipxy

+0

[관련 레코드를 포함하여 Sequelize로 자체 조인 쿼리]의 가능한 복제본 (https://stackoverflow.com/questions/40294776/query-self-join-with-sequelize-including-related-record) – philipxy

답변

0

입니다 : 다음은 MySQL의 코드입니다. 어쩌면 누군가에게 유용 할 것입니다. 쓰기

db.belongsTo(db, { 
    as: 'db2', 
    foreignKey: 'parent_id', 
    required: false 
}); 

let rows = await db.findAll({ 
    where: { 
     chk: 0 
    }, 
    include: [{ 
     model: db, 
     as: 'db2', 
     attributes: ['id', 'full_name'] 
    }], 
    raw: true, 
    limit: 20 
}).catch(function (err) { 
    console.log(err); 
});