ホームページ >データベース >mysql チュートリアル >Rails 4 で LEFT OUTER JOIN を実行して、特定の学生が登録していないコースを検索するにはどうすればよいですか?
Rails 4 の LEFT OUTER JOIN
Rails 4 では、ActiveRecord の joins メソッドを使用して LEFT OUTER JOIN のような複雑な SQL クエリを実行できます。 。このメソッドを使用すると、結合条件を文字列として指定できます。
Student、Course、StudentEnrollment の 3 つのモデルを使用したシナリオを考えてみましょう。特定の学生が登録していないコースのリストを取得したいとします。
LEFT OUTER JOIN を使用してこれを実現するには、次の 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 では、このクエリは次のコードを使用して実行できます。
Course.joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id") .where("student_enrollments.id IS NULL AND student_enrollments.student_id = ?", <SOME_STUDENT_ID_VALUE>). where("courses.active = true")
文字列引数を指定した joins メソッドを利用することで、次のことができます。結合条件を詳細に指定します。このアプローチは、Rails で複雑なデータベース クエリを実行する柔軟な方法を提供します。
以上がRails 4 で LEFT OUTER JOIN を実行して、特定の学生が登録していないコースを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。