考虑以下表格:
Student
-------
id
name
和
Assignment
----------
id
name
和
Grade
-----
id
student_id
assignment_id
grade
学生可以有多个成绩,对应不同的作业。
现在,我想选择记录来生成如下所示的表:
Name Assignment 1 Assignment 2 Assignment 3
--------------------------------------------------------
Bob 55% 80% 23%
Suzy 90% 65% 100%
而且,我希望能够按其中一个等级(即作业1)进行排序
这可以用SQL完成吗?作为额外的奖励,可以使用flask-sqlalchemy吗?
我有一个想法,我需要做一个JOIN和ORDER BY,但我真的不知道该去哪里。
谢谢!
答案 0 :(得分:2)
如果您使用的是SQLite,则必须使用SQL的最小公分母,这意味着您要考虑的每个作业都要加入:
SELECT
name,
Grade1.grade AS assignment1,
Grade2.grade AS assignment2,
Grade3.grade AS assignment3
FROM
Student
LEFT JOIN Grade AS Grade1 ON (Student.id = Grade1.student_id and Grade1.assignment_id = ...)
LEFT JOIN Grade AS Grade2 ON (Student.id = Grade2.student_id and Grade2.assignment_id = ...)
LEFT JOIN Grade AS Grade3 ON (Student.id = Grade3.student_id and Grade3.assignment_id = ...)
ORDER BY Grade1.grade
将其翻译成SQLAlchemy应该很简单。
答案 1 :(得分:0)
在Oracle中你可以考虑这样的事情
CustomObject[] data