Maison >base de données >tutoriel mysql >Comment effectuer une jointure externe gauche dans Rails 4 pour rechercher des cours non inscrits par un étudiant spécifique ?

Comment effectuer une jointure externe gauche dans Rails 4 pour rechercher des cours non inscrits par un étudiant spécifique ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 20:33:18300parcourir

How to Perform a LEFT OUTER JOIN in Rails 4 to Find Courses Unenrolled by a Specific Student?

LEFT OUTER JOIN dans Rails 4

Dans Rails 4, il est possible d'exécuter des requêtes SQL complexes comme un LEFT OUTER JOIN en utilisant la méthode de jointure d'ActiveRecord . Cette méthode vous permet de spécifier les conditions de jointure sous forme de chaîne.

Considérez un scénario avec trois modèles : Student, Course et StudentEnrollment. Supposons que vous souhaitiez récupérer une liste de cours qui ne sont pas inscrits par un étudiant spécifique.

Pour y parvenir à l'aide d'un LEFT OUTER JOIN, la requête SQL suivante peut être utilisée :

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

Dans Rails, cette requête peut être exécutée en utilisant le code suivant :

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")

En utilisant la méthode joins avec un argument de chaîne, vous pouvez spécifier les conditions de jointure dans détail. Cette approche offre un moyen flexible d'exécuter des requêtes de base de données complexes dans Rails.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn