- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我创建的数据库:
students = [('TOM', 6120, 85),
('Jerry', 6110,86),
('Spike', 6120,55),
('Tyke',6110,73),
('Butch',6110,89),
('Toodle',6120,76)]
courses = [(6110,'Data Science I', 'LSB105'),
(6120,'Data Science II', 'LSB109')]
grading = [('A', 90, 100),
('B', 80,90),
('C',70,80)]
import sqlite3
conn = sqlite3.connect('example3.db')
c = conn.cursor()
c.execute('CREATE TABLE students(name TEXT, courseid INTEGER, score INTEGER)') #create a table
c.executemany('INSERT INTO students VALUES(?,?,?)', students)
c.execute('CREATE TABLE courses(courseid INTEGER, name TEXT, classroom TEXT)') #create a table
c.executemany('INSERT INTO courses VALUES(?,?,?)', courses)
c.execute('CREATE TABLE gradingscheme(letter TEXT, lower REAL, upper REAL)') #create a table
c.executemany('INSERT INTO gradingscheme VALUES(?,?,?)', grading)
conn.commit()
conn.close()
这就是我最终想要的: final result
我做了3步,我觉得我的方法太复杂了:
c.execute('''
CREATE view part1 AS
SELECT s.name,s.courseid,c.name AS coursename,classroom,score
FROM students AS s, courses AS c
WHERE s.courseid=c.courseid
''')
#Create another view "part2" to combine "part1" and table: "gradingscheme"
c.execute('''
CREATE view part2 AS
SELECT * FROM part1 , (SELECT * FROM gradingscheme AS g)
''')
#Get the final results
c.execute('''
SELECT name, courseid, coursename, classroom, score, letter
FROM part2
WHERE score BETWEEN lower AND upper
''')
那么,有人可以帮我缩短我的代码吗?感谢您的帮助!
最佳答案
在这种情况下不需要 View 。您可以直接加入,如下。我已使用左连接进行评分方案来处理不在评分方案中定义的范围内的分数。例如,我对低于 70 分的成绩使用“D”。如果您不需要它并且所有范围都将在评分方案表中给出,您可以使用 JOIN 本身而不是 LEFT JOIN
SELECT s.name, s.courseid,
c.name AS coursename,
c.classroom, s.score,
COALESCE(g.letter, 'D') AS grade
FROM students s
JOIN courses c
ON (s.courseid=c.courseid)
LEFT JOIN gradingscheme g
ON (s.score >= g.lower AND s.score <= g.upper)
谢谢,
拉维
关于python - 如何以最简单的方式连接两个没有公共(public)键的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532064/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!