Python 连接表的SQL Case语句

Python 连接表的SQL Case语句,python,sql,sqlite,Python,Sql,Sqlite,我正在处理以下列的三个表: 学生姓名文本、课程ID整数、分数整数,例如:“汤姆”,6120,85 CourseSourseID整数、名称文本、课堂文本例如:6110、“科学”、“LSB105” gradingschemeletter文本、下实数、上实数,例如:“A”、90、100 我正在尝试连接所有三个表,以便根据学生表中的分数,包括gradingscheme表中指定的每个学生的字母分数。我正在Python中使用sqlite3库。我将sql语句编写如下: SELECT s.name, s.cou

我正在处理以下列的三个表:

学生姓名文本、课程ID整数、分数整数,例如:“汤姆”,6120,85 CourseSourseID整数、名称文本、课堂文本例如:6110、“科学”、“LSB105” gradingschemeletter文本、下实数、上实数,例如:“A”、90、100 我正在尝试连接所有三个表,以便根据学生表中的分数,包括gradingscheme表中指定的每个学生的字母分数。我正在Python中使用sqlite3库。我将sql语句编写如下:

SELECT s.name, s.courseid, c.name, c.classroom, s.score, CASE g.letter WHEN s.score BETWEEN g.upper AND g.lower
FROM students AS s, courses AS c, gradingscheme AS g
WHERE s.courseid=c.courseid
然而,我得到了一个错误。错误的最后两行如下所示:

SELECT s.name, s.courseid, c.name, c.classroom, s.score, CASE g.letter WHEN s.score BETWEEN g.upper AND g.lower
FROM students AS s, courses AS c, gradingscheme AS g
WHERE s.courseid=c.courseid
其中s.courseid=c.courseid'

sqlite3.error:near FROM:语法错误

请帮忙

编辑代码:

SELECT s.name, s.courseid, c.name, c.classroom, s.score, g.letter
FROM students AS s
INNER JOIN courses AS c
ON s.courseid=c.courseid
INNER JOIN gradingscheme AS g
ON CASE g.letter WHEN s.score BETWEEN g.lower AND g.upper
现在我得到了一个错误:

当s.得分介于上下两个字母之间时的格字母 sqlite3.error:接近上限:语法错误


可能,我不知道如何使用CASE语句进行条件连接

不需要CASE-只需使用和

SELECT s.name, s.courseid, c.name, c.classroom, s.score, g.letter
FROM students AS s
INNER JOIN courses AS c
ON s.courseid=c.courseid
INNER JOIN gradingscheme AS g
ON s.score > g.lower AND s.score < g.upper

您不需要使用case语句使查询过于复杂,只需将连接条件指定为s.score>g.lower,s.score将学习使用正确的显式连接语法。简单规则:不要在FROM子句中使用逗号。谢谢Gordon。我现在更改了代码并使用了内部联接。但是,我得到的错误如上面编辑的问题所示。我可能无法理解如何在这里使用用例语句。非常感谢Hogan。我是一个新的编码,并没有意识到它是如此简单,非常感谢您在代码中的细微之处。改变的建议