2017-10-18 3 views
0

Wie kann ich aus der gleichen Tabelle zweimal mit Sequelize auswählen? Hier ist MySQL-Code:Sequelize MySQL aus derselben Tabelle auswählen (linker Join)

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

Hier ist meine MySQl Tabelle

enter image description here

Hier ist mein Sequelize Code

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

Und was hast du gefunden googeln über Self-Joins in sequelize? – philipxy

+0

Mögliches Duplikat von [Query-Self-Join mit Sequelize, einschließlich zugehörigem Datensatz] (https://stackoverflow.com/questions/40294776/query-self-join-with-sequelize-inclusive-related-record) – philipxy

Antwort

0

Endlich habe ich eine Antwort gefunden. Vielleicht wird es jemandem nützlich sein. Nach

await ec.sequelize.sync(); 

schreiben

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); 
}); 
Verwandte Themen