ActiveRecord を使用して、関連付けられたレコードが 1 つだけのデータベースからすべてのレコードを取得するにはどうすればよいですか?
例: 2 つのテーブルがあり、table_a には table_b に多くの関連レコードがあります。
*table_b に関連付けられたレコードが 1 つだけ*ある table_a クエリ オブジェクトのみを取得する ActiveRecord クエリを作成したいと考えています。
どうすればこれを行うことができますか?
ありがとう!
ActiveRecord を使用して、関連付けられたレコードが 1 つだけのデータベースからすべてのレコードを取得するにはどうすればよいですか?
例: 2 つのテーブルがあり、table_a には table_b に多くの関連レコードがあります。
*table_b に関連付けられたレコードが 1 つだけ*ある table_a クエリ オブジェクトのみを取得する ActiveRecord クエリを作成したいと考えています。
どうすればこれを行うことができますか?
ありがとう!
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;