1
多対多の関係でリンクされた2つのテーブルがあるとします。私はコースsの名前で生徒の名前を照会しようとしていますサブクエリ内のコレクションの取得
class Student(db.Model):
id = db.Column(UUIDType, primary_key=True)
name = db.Column(db.String(255))
courses = db.relationship('Course',
secondary=student_courses,
backref=db.backref('students'))
class Course(db.Model):
id = db.Column(UUIDType, primary_key=True)
name = db.Column(db.String(255))
/彼は(それらのすべてではない)サブクエリを使用して加入し、それだけで最初に一致したコースの名称を示しています。つまり、(student_id, student_name, [list of course_names])
を検索したいと思います。
sq = db.session.query(Student.id.label('student_id'),
Course.id.label('course_id'),
Course.name.label('course_name')) \
.join(Student.courses) \
.group_by(Student.id, Course.id).subquery('pattern_links_sq')
db.session.query(Student.id, Student.name, sq.c.course_name) \
.join(Student.courses)
.filter(Student.id == sq.c.student_id).all()
に
array_agg
機能を使用することができますか? –私はPostgresqlを使用します。 – Edouard