1. ホーム
  2. ruby-on-rails

Rails ActiveRecord :INNERJOINの代わりにLEFT JOINで結合する。

2023-10-20 15:58:49

質問

私はこのコードを持っています

User.find(:all, :limit => 10, :joins => :user_points,
                :select => "users.*, count(user_points.id)", :group =>
                "user_points.user_id")

とすると、以下のようなSQLが生成されます。

SELECT users.*, count(user_points.id) 
FROM `users` 
INNER JOIN `user_points` 
ON user_points.user_id = users.id 
GROUP BY user_points.user_id 
LIMIT 10

以外の方法で、INNER JOINの代わりにLEFT JOINを作ることは可能でしょうか? User.find_by_sql と手動でクエリを入力する以外の方法で、INNER JOINの代わりにLEFT JOINを作ることはできますか?

どのように解決するのですか?

次のことを試してみてください。

User.find(:all, limit: 10,
            joins:  "LEFT JOIN `user_points` ON user_points.user_id = users.id" ,
            select: "users.*, count(user_points.id)", 
            group:  "user_points.user_id")