续集:如果where子句匹配,则放弃父项

时间:2019-04-20 12:17:43

标签: node.js orm sequelize.js

我想对我面临的这个问题有所帮助。 我不知道是否有可能基于子[notIn]查询放弃父值。

我有3个模型,这些模型具有多对多关系。 产品-> ProductTag <-标签

我的主要任务是获取与where子句无关的产品,这意味着如果ProductTag中有带有tag_id和product_id的行,则不应返回该产品,如果ProductTag与该产品中的product_id没有关系,也应该返回。

我设法通过以下方式“正确”地从查询中获取结果:

Product.findAll({
  where: {
   [or]: {
      '$ProductTags.id$': null,
      '$ProductTags.tag_id$': {[notIn]: queryParams['TagId'].split(',')}
    }
  },
  include: [{
    model: ProductTag,
    required: false
  }]

我现在的主要问题是,如果我有一个id = 1的产品,并且在ProductTag表中有两行:

product_id = 1 & tag_id = 2
product_id = 1 & tag_id = 3

如果我使用tag_id = 1执行查询,那么我希望丢弃的是product_id = 1的整个产品。

我曾尝试按ID对产品进行分组,但我仍然有其他嵌套关系

  

“ SELECT列表的表达式#30不在GROUP BY子句中,并且包含未聚合的列\'ProductTags.id \”,该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by'不兼容

我想知道是否有可能知道我假装做什么或做这件事的最佳方法是什么。

非常感谢!

0 个答案:

没有答案