使用 ActiveRecord,我如何从只有一条关联记录的数据库中获取所有记录?
例如:我有两张表,table_a在table_b中有很多相关记录。
我想做一个 ActiveRecord 查询,它只获取 table_a 查询对象,这些对象在 table_b* 中只有一个关联记录。
我该怎么做呢?
谢谢!
使用 ActiveRecord,我如何从只有一条关联记录的数据库中获取所有记录?
例如:我有两张表,table_a在table_b中有很多相关记录。
我想做一个 ActiveRecord 查询,它只获取 table_a 查询对象,这些对象在 table_b* 中只有一个关联记录。
我该怎么做呢?
谢谢!
好吧,我不知道在 Rails 中有什么好的简单的方法可以做到这一点,但是我收集了一个原始 sql 查询,您可以使用 ActiveRecord::Base.connection.execute 触发它。让我告诉你,这可能是我构建过的最丑陋的查询,对此我深表歉意 :-)
SELECT ta.* FROM table_a AS ta INNER JOIN table_b AS tb ON ta.id = tb.table_a_id WHERE
tb.id IN ( SELECT temp.id FROM (
SELECT id, count(*) AS count FROM table_b GROUP BY table_a_id
) AS temp WHERE temp.count=1 ) GROUP BY ta.id;