【发布时间】:2023-04-08 06:54:02
【问题描述】:
我的问题是对以下链接中提出的问题的扩展,并进行了一些更改,如下所述。
Where condition for joined table in Sequelize ORM
我想用 sequelize ORM 得到这样的查询:
SELECT "A".*,
FROM "A"
LEFT OUTER JOIN "B" ON "A"."bId" = "B"."id"
LEFT OUTER JOIN "C" ON "A"."cId" = "C"."id"
WHERE ("B"."userId" = '100' OR "C"."userId" = '100')
AND ("B"."orgId" = '101' OR "C"."orgId" = '102')
AND ("B"."contentId" = 'content1' OR "C"."profileId" = 'profileId1');
我想要的是将连接表中的更多字段集合到多个 OR 条件中。就像上面的例子一样,与上面链接中提出的问题相比,在 where 条件中只添加了 userId,我想添加 orgId、contentId 等。
如上述链接中所述,最高票数 (74) 的答案可以正常工作,但仅适用于 userId 等单一字段集。当我想使用多个字段时,我遇到了问题。
根据上面链接中提供的答案,我在下面尝试了,但不幸的是,它只正确选择了一个 OR,其余的都被忽略了。
const whereCondition = {
[Sequelize.Op.or]: [
[
{ '$B.userId$': 100 },
{ '$C.userId$': 100 }
]
],
[Sequelize.Op.or]: [
[
{ '$B.orgId$': 101 },
{ '$C.orgId$': 102 }
]
],
[Sequelize.Op.or]: [
[
{ '$B.contentId$': 'content1' },
{ '$C.profileId$': 'profileId1' }
]
]
}
我怎样才能做到这一点?
【问题讨论】:
-
WHERE ("B"."userId" = '100' OR "C"."userId" = '100')基本上 将你的LEFT JOINs 简化为一个普通的连接?
标签: javascript sql postgresql orm sequelize.js