0

ActiveRecord を使用して、関連付けられたレコードが 1 つだけのデータベースからすべてのレコードを取得するにはどうすればよいですか?

例: 2 つのテーブルがあり、table_a には table_b に多くの関連レコードがあります。

*table_b に関連付けられたレコードが 1 つだけ*ある table_a クエリ オブジェクトのみを取得する ActiveRecord クエリを作成したいと考えています。

どうすればこれを行うことができますか?

ありがとう!

4

1 に答える 1

0

Rails でこれを行う簡単で便利な方法を私は知りませんが、ActiveRecord::Base.connection.execute を使用して実行できる生の SQL クエリをまとめました。これはおそらく私がこれまでに作成した中で最も醜いクエリです。申し訳ありません:-)

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;
于 2012-07-20T17:38:50.553 に答える