【发布时间】:2021-03-07 04:02:09
【问题描述】:
您能否帮助我找到从数据库中选择某些数据的正确方法 - 基于联结表中的多次出现?
我正在使用 Sequelize ORM,但纯 SQL 也可以。查询应该是动态的——基于用户的输入。虽然,在这一点上,即使是静态解决方案也会非常有帮助。 ????
我将使用一些例子来更好地描述我在这里面临的问题:
我有两张表——假设一张用于订单,第二张用于产品(订单、产品)。 每个订单可以包含多个产品,每个产品可以关联多个订单。我使用 order_product (OrderProduct) 作为联结表(其中包含订单和产品 ID 以外的一些附加字段,例如产品数量)在这些表之间建立了多对多关系:
Order.belongsToMany(Product, { through: OrderProduct });
Product.belongsToMany(Order, { through: OrderProduct });
我的问题是 – 我如何从数据库中获取所有包含的订单 – 例如 – ID = 1 的产品,ID = 2 的 AND 产品,ID = 3 的 AND 产品?
使用 Sequelize 或普通 SQL 最优雅的解决方案是什么?
我在 Sequelize 中尝试了 include 语句,但在这种情况下我未能正确使用它。
另一方面,普通 SQL 中的许多“EXISTS”语句(一个接一个)可能太昂贵了?
谢谢! ????
【问题讨论】:
标签: sql node.js postgresql express sequelize.js