使用ActiveRecord,如何从只有一个关联记录的数据库中获取所有记录?

时间:2012-07-20 16:35:57

标签: mysql sql ruby-on-rails-3 activerecord

使用ActiveRecord,如何从只有一个关联记录的数据库中获取所有记录?

例如:我有两个表,table_a在table_b中有许多相关记录。

我想创建一个ActiveRecord查询,它只会获取table_a查询对象,这些查询对象在table_b *中只有一个关联记录。

我该怎么做呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,我不知道在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;