Sql 何处有许多与计数的续集

Sql 何处有许多与计数的续集,sql,sql-server,database,sequelize.js,Sql,Sql Server,Database,Sequelize.js,我并不擅长UML/数据库图,但下面希望能展示我的数据库设计(MsSQL) 我有一个“位置”表,其中有0到多个托盘(一个位置中有0到多个托盘)。但是,该位置可以是两种类型之一,位置x或y。此图简化了它,但有许多不同类型的位置,每种类型的字段都非常不同 我将Sequelize用作ORM,并试图找出如何执行特定查询。我想我已经很接近了,但还是被卡住了 我需要的是: 选择单个LocationTypeX,其中“active”为真,且其对应位置中的托盘少于10个 之前,我已经去了所有LocationTyp

我并不擅长UML/数据库图,但下面希望能展示我的数据库设计(MsSQL)

我有一个“位置”表,其中有0到多个托盘(一个位置中有0到多个托盘)。但是,该位置可以是两种类型之一,位置x或y。此图简化了它,但有许多不同类型的位置,每种类型的字段都非常不同

我将Sequelize用作ORM,并试图找出如何执行特定查询。我想我已经很接近了,但还是被卡住了

我需要的是:

选择单个LocationTypeX,其中“active”为真,且其对应位置中的托盘少于10个

之前,我已经去了所有LocationTypeX,其中“active”是真的。包括位置和托盘(在位置上),并在代码中完成所有操作,以确定哪个位置是相关的。然而,这是永远的,因为有数千个地点和托盘的负载分布通过他们

我要做的就是显示地点名称。就是这样。但与上述条件匹配的位置名称。希望有人能帮忙

到目前为止我有

models.Location.findAll({
  group: ['Location.id', 'Pallets.id'],
  attributes: ['Location.id', 'Pallets.id', [models.sequelize.fn('COUNT',models.sequelize.col('Pallets.id')), 'PalletCount']],
  include: [{
    model: models.Pallet,
    attributes: []
  }]
}).then((ret)=> {
  console.log(ret);
});

但这不做“主动”检查。而且也没有对货盘数量执行where条款。回到原点

我已经设法用我可以在Sequelize中使用的原始SQL回答了我自己的问题。然而,我仍然有兴趣知道如何在Sequelize中做到这一点

models.sequelize.query(
  `SELECT TOP 1 Locations.id, Locations.name FROM LocationTypeX
  INNER JOIN Locations ON LocationTypeX.LocationId = Locations.id
  LEFT JOIN Pallets on (Locations.id = Pallets.LocationId)
  WHERE LocationTypeX.active = 1
  GROUP BY Locations.id, Locations.name
  HAVING COUNT(Pallets.id) < 3`
, { type: models.sequelize.QueryTypes.SELECT})
models.sequelize.query(
`从LocationTypeX中选择前1个Locations.id、Locations.name
LocationTypeX.LocationId=Locations.id上的内部联接位置
左侧连接托盘(Locations.id=Pallets.LocationId)
其中LocationTypeX.active=1
按Locations.id、Locations.name分组
计数(托盘id)<3`
,{type:models.sequelize.QueryTypes.SELECT})

运行Sql事件探查器并检查实际query@MikhailLobanov为什么?我现在提出的问题仍然很离题,我的英语不是很好。“遥远”是什么意思?运行命令
models.Location.findAll({
)时,没有sql查询?