[解決済み] Rails 4のLEFT OUTER JOIN
2023-04-27 12:33:49
質問
3つのモデルを持っています。
class Student < ActiveRecord::Base
has_many :student_enrollments, dependent: :destroy
has_many :courses, through: :student_enrollments
end
class Course < ActiveRecord::Base
has_many :student_enrollments, dependent: :destroy
has_many :students, through: :student_enrollments
end
class StudentEnrollment < ActiveRecord::Base
belongs_to :student
belongs_to :course
end
Courses テーブルにある、特定の学生に関連する StudentEnrollments テーブルに存在しないコースのリストを照会したいと思います。
私はおそらく左結合が行くべき方法であることを発見しましたが、railsのjoins()は引数としてテーブルしか受け入れないようです。 私が望むことを行うだろうと思うSQLクエリは次のとおりです。
SELECT *
FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = se.course_id
WHERE se.id IS NULL AND se.student_id = <SOME_STUDENT_ID_VALUE> and c.active = true
このクエリをRails 4の方法で実行するにはどうしたらよいでしょうか?
どんな意見でも結構です。
どのように解決するのですか?
結合SQLを文字列で指定することもできます。
joins("LEFT JOIN StudentEnrollment se ON c.id = se.course_id")
しかし、私はわかりやすくするために、レール標準のテーブル名を使っています。
joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id")
関連
-
[解決済み] LINQでInclude()は何をするのですか?
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み] SQLのインデックスとは何ですか?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] NOT IN vs NOT EXISTS
-
[解決済み] T-SQL文の接頭辞Nの意味と使うべきタイミングは?
-
[解決済み] Rails 3 の LEFT OUTER ジョイント