获取其他两个相关表上条件缺失的所有记录

问题描述 投票:0回答:1

假设三张表:

Table A
has_many :table_b

Table B
belongs_to :table_a
belongs_to :table_c

Table C
has_many :table_b

表 B 和表 C 各有一个布尔属性,其中有一个名为“active”的布尔属性

如何编写 SQL 语句或活动记录表达式来获取表 A 中没有的所有记录

  1. 任何具有活动状态的表 B 记录均保存为 true 并且
  2. 如果有的话,哪些不与活动属性保存为 true 的任何表 C 相关联?
sql ruby-on-rails postgresql
1个回答
0
投票

基本上,我在彼此深处做了两个 LEFT OUTER JOIN,最终按照我的预期工作:

SELECT "table_a".* FROM "table_a"
LEFT OUTER JOIN "table b"
ON "table_b"."table_a_id" = "table_a"."id"
AND "table_b"."active" = true
LEFT OUTER JOIN "table_c"
ON "table_b"."table_c_id" = "table_c"."id" 
AND "table_c"."active" = true
WHERE "table_b"."id" IS NULL OR "table_c"."id" IS NULL
© www.soinside.com 2019 - 2024. All rights reserved.