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 ?
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!