models.table1.findAll({
limit : 10,
order : [['table1_id', 'ASC']],
where : {
name : 'xyz'
},
include: [{
model: models.table2,
as : 'table2'
}, {
model : models.table3
as : 'table3'
where : {name : 'xyz'}
limit : 1
}],
});
结果是预期的10行... table3包含多个具有相同' name'的行。和' forign_key_id'
内部Sequelize如何做到这一点.. 上面的sequelize查询表格如下......
//考虑' *'实际上是表的所有字段。
select * from table1 t1
left join table2 t2 on t2.table2_id=t1.table1_id
where t1.name ='xyz' order by table1_id ASC limit 10;
和
SELECT table3.* FROM
((SELECT * FROM table3 AS t3 WHERE (t3.id = 'xyz') AND
t3.forign_key_id = 1 // forign_key_id is what we specified in association
LIMIT 1)
UNION ALL ((SELECT * FROM table3 AS t3 WHERE (t3.id = 'xyz') AND
t3.forign_key_id = 2 limit 1)
.
.
UNION ALL ((SELECT * FROM table3 AS t3 WHERE (t3.id = 'xyz') AND
t3.forign_key_id = 10
LIMIT 1)) as table3;