我不是UML /数据库图表中最好的,但以下有希望显示我的数据库设计(MsSQL)
我有一个“位置”表,其中包含零到多个托盘(一个位置有0个托盘)。但是,该位置可以是两种类型之一,位置x或y。此图简化了它,但是有许多不同类型的位置,每种类型都有非常不同的字段。
我使用Sequelize作为ORM,并试图弄清楚如何进行特定查询。我认为我很接近但很困难。
我需要的是:
选择一个LocationTypeX,其中“active”为true,其相应位置的托盘少于10个。
之前我已经离开并获得所有LocationTypeX,其中“active”为true。包括位置和托盘(在位置)并在代码中完成所有以确定哪个位置是相关的。然而,这需要永远,因为有成千上万的地方和托盘堆放出来。
我所追求的只是显示位置名称。这就对了。但是匹配上述条件的位置名称。希望有人可以提供帮助吗?
到目前为止我已经
了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子句。回到原点
答案 0 :(得分:0)
我已经设法用原始SQL回答我自己的问题,我可以在Sequelize中使用。但是我仍然有兴趣知道如何在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})