联合所有包括Sequlize.model.find所有人都可以解释这个

时间:2018-06-06 06:49:38

标签: node.js sequelize.js

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;

0 个答案:

没有答案
相关问题