第1关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表)
任务描述
等值连接:求S
表和J
表城市相同的等值连接(列顺序还是按照S
、J
表)相关知识
1、工程项目表J
由工程项目代码(JNO
)、工程项目名(JNAME
)、工程项目所在城市(CITY
)组成。J
表如下图:
现已构建J
表,结构信息如下:
2、供应商表S
由供应商代码(SNO
)、供应商姓名(SNAME
)、供应商状态(STATUS
)、供应商所在城市(CITY
)组成.
S
表如下图:
现已构建S
表,结构信息如下:
SELECT S.*,J.*
FROM S,J
WHERE S.city=J.city
第2关:查询供应情况,并显示供应商、零件和工程三者的名称
任务描述
查询供应情况,并显示供应商、零件和工程三者的名称相关知识
1、供应商表S
由供应商代码(SNO
)、供应商姓名(SNAME
)、供应商状态(STATUS
)、供应商所在城市(CITY
)组成.
S
表如下图:
2、零件表P
由零件代码(PNO
)、零件名(PNAME
)、颜色(COLOR
)、重量(WEIGHT
)组成;
P
表如下图:
现已构建P
表,结构信息如下:
3、工程项目表J
由工程项目代码(JNO
)、工程项目名(JNAME
)、工程项目所在城市(CITY
)组成。
J
表如下图:
现已构建J
表,结构信息如下:
4、供应情况表SPJ
由供应商代码(SNO
)、零件代码(PNO
)、工程项目代码(JNO
)、供应数量(QTY
)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY
。
SPJ
表如下图:
现已构建SPJ
表,结构信息如下:
SELECT SNAME,PNAME,JNAME,QTY
FROM S,P,J,SPJ
WHERE SPJ.SNO=S.SNO AND
SPJ.PNO=P.PNO AND
SPJ.JNO=J.JNO
第3关:找出上海厂商供应的所有零件号码
任务描述
找出上海厂商供应的所有零件号码(注意去重)相关知识
1、供应商表S
由供应商代码(SNO
)、供应商姓名(SNAME
)、供应商状态(STATUS
)、供应商所在城市(CITY
)组成.
S
表如下图:
现已构建S
表,结构信息如下:
2、供应情况表SPJ
由供应商代码(SNO
)、零件代码(PNO
)、工程项目代码(JNO
)、供应数量(QTY
)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY
。
SPJ
表如下图:
现已构建SPJ
表,结构信息如下:
SELECT DISTINCT PNO
FROM SPJ,S
where SPJ.SNO=S.SNO AND
CITY="上海"
第4关:找出使用上海产的零件的工程名称
任务描述
找出使用上海产的零件的工程名称,结果按工程名称降序排序。相关知识
1、供应商表S
由供应商代码(SNO
)、供应商姓名(SNAME
)、供应商状态(STATUS
)、供应商所在城市(CITY
)组成.
S
表如下图:
现已构建S
表,结构信息如下:
2、工程项目表J
由工程项目代码(JNO
)、工程项目名(JNAME
)、工程项目所在城市(CITY
)组成。
J
表如下图:
现已构建J
表,结构信息如下:
3、供应情况表SPJ
由供应商代码(SNO
)、零件代码(PNO
)、工程项目代码(JNO
)、供应数量(QTY
)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY
。
SPJ
表如下图:
现已构建SPJ
表,结构信息如下:
SELECT DISTINCT JNAME
FROM J,SPJ,S
WHERE J.JNO=SPJ.JNO
AND SPJ.SNO=S.SNO
AND S.CITY='上海'
第5关 找出没有使用天津产的零件的工程号码
任务描述
找出没有使用天津产的零件的工程号码相关知识
1、供应商表S
由供应商代码(SNO
)、供应商姓名(SNAME
)、供应商状态(STATUS
)、供应商所在城市(CITY
)组成.
S
表如下图:
现已构建S
表,结构信息如下:
2、供应情况表SPJ
由供应商代码(SNO
)、零件代码(PNO
)、工程项目代码(JNO
)、供应数量(QTY
)组成,标识某供应商供应某种零件给某工程项目的数量为QTY
。
SPJ
表如下图:
现已构建SPJ
表,结构信息如下:
SELECT DISTINCT JNO
FROM SPJ
WHERE JNO NOT IN(
SELECT JNO
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND CITY='天津')
第6关 求供应工程J1零件为红色的供应商号码SNO
任务描述
求供应工程J1
零件为红色的供应商号码SNO
相关知识
1、零件表P
由零件代码(PNO
)、零件名(PNAME
)、颜色(COLOR
)、重量(WEIGHT
)组成;P
表如下图:
现已构建P
表,结构信息如下:
2、供应情况表SPJ
由供应商代码(SNO
)、零件代码(PNO
)、工程项目代码(JNO
)、供应数量(QTY
)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY
。
SPJ
表如下图:
现已构建SPJ
表,结构信息如下:
SELECT SNO
FROM P,SPJ
WHERE P.PNO=SPJ.PNO AND JNO='J1' AND COLOR='红';
第7关 求没有使用天津供应商生产的红色零件的工程号 JNO
任务描述
求没有使用天津供应商生产的红色零件的工程号JNO
相关知识
1、供应商表S
由供应商代码(SNO
)、供应商姓名(SNAME
)、供应商状态(STATUS
)、供应商所在城市(CITY
)组成.
S
表如下图:
现已构建S
表,结构信息如下:
2、零件表P
由零件代码(PNO
)、零件名(PNAME
)、颜色(COLOR
)、重量(WEIGHT
)组成;
P
表如下图:
现已构建P
表,结构信息如下:
3、供应情况表SPJ
由供应商代码(SNO
)、零件代码(PNO
)、工程项目代码(JNO
)、供应数量(QTY
)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY
。
SPJ
表如下图:
现已构建SPJ
表,结构信息如下:
SELECT DISTINCT JNO
FROM SPJ
WHERE JNO NOT IN(
SELECT JNO
FROM S,P,SPJ
WHERE S.SNO=SPJ.SNO AND
P.PNO=SPJ.PNO AND
COLOR='红' AND CITY='天津')
第8关 查询每个选手的信息及其提交的解答信息,没做题的选手不显示
任务描述
查询每个选手的信息及其提交的解答信息,没做题的选手不显示(查询结果仅显示前50条,即在查询语句末尾加LIMIT 50
)相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建
users
表,结构信息如下:
2、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT *
FROM users,solution
WHERE users.user_id=solution.user_id
LIMIT 50;
第9关 查询做了1001题且耗时大于500(time)的选手信息
任务描述
查询做了1001
题且耗时大于500
(time
)的选手信息相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建users
表,结构信息如下:
2、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT DISTINCT users.user_id,reg_time,name
FROM users,solution
WHERE users.user_id=solution.user_id
AND solution.problem_id=1001
AND solution.time>500;
第10关 查询所有选手信息及其提交的解答信息,没做题的选手也要显示
任务描述
查询所有选手信息及其提交的解答信息,没做题的选手也要显示 (查询结果仅显示前50
条,即在查询语句末尾加LIMIT 50
)相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建users
表,结构信息如下:
2、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT DISTINCT *
FROM users
LEFT JOIN solution
ON users.user_id=solution.user_id
LIMIT 50
第11关 查询每个选手的信息、交的题目、和提交的结果,没做题的选手不显示
任务描述
查询每个选手的信息、交的题目、和提交的结果,没做题的选手不显示(查询结果仅显示前50
条,即在查询语句末尾加LIMIT 50
)相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建users
表,结构信息如下:
2、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT users.user_id,reg_time,name,problem_id,result
FROM users, solution
where users.user_id=solution.user_id
LIMIT 50
第12关 用嵌套查询查找和problem_id为 1009 的题目属于同一个比赛的题目信息
任务描述
用嵌套查询查找和problem_id
为1009
的题目属于同一个比赛的题目信息,结果按problem_id
升序排序。相关知识
1、problem
为题目表;problem
表如下图(仅显示前几条):
现已构建problem
表,结构信息如下:
2、contest_problem
为比赛-题目关系;
contest_problem
表如下图(仅显示前几条):
现已构建contest_problem
表,结构信息如下:
SELECT * FROM problem
WHERE problem_id IN(
SELECT problem_id FROM contest_problem
WHERE contest_id IN(
SELECT contest_id FROM contest_problem
WHERE problem_id = 1009
)
)
ORDER BY problem_id ASC;
第13关 用连接查询查找和problem_id为 1009 的题目属于同一个比赛的题目信息
任务描述
用连接查询查找和problem_id
为1009
的题目属于同一个比赛的题目信息,结果按problem_id
升序排序。相关知识
1、problem
为题目表;problem
表如下图(仅显示前几条):
现已构建problem
表,结构信息如下:
2、contest_problem
为比赛-题目关系;
contest_problem
表如下图(仅显示前几条):
现已构建contest_problem
表,结构信息如下:
SELECT problem.problem_id,title,description,hint,time_limit,memory_limit FROM problem,contest_problem A,contest_problem B
WHERE A.problem_id = 1009 AND A.contest_id = B.contest_id AND problem.problem_id = B.problem_id
ORDER BY B.problem_id ASC;
第14关 用 EXISTS 实现查询做了 1032 号题的选手信息
任务描述
用EXISTS
实现查询做了1032
号题的选手信息相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建users
表,结构信息如下:
2、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT user_id,reg_time,name
FROM users
WHERE EXISTS (
SELECT *
FROM solution
WHERE users.user_id=solution.user_id
AND problem_id=1032
);
第15关 用 EXISTS 实现查询没做 1032 号题的选手信息
任务描述
用EXISTS
实现查询没做1032
号题的选手信息相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建users
表,结构信息如下:
2、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT user_id,reg_time,name
FROM users
WHERE NOT EXISTS (
SELECT *
FROM solution
WHERE users.user_id=solution.user_id
AND problem_id=1032
);
第16关 用 EXISTS 实现查询和problem_id为 1009 的题目属于同一个比赛的题目信息
任务描述
用EXISTS
实现查询和problem_id
为1009
的题目属于同一个比赛的题目信息,结果按problem_id
升序排序。相关知识
1、problem
为题目表;problem
表如下图(仅显示前几条):
现已构建problem
表,结构信息如下:
2、contest_problem
为比赛-题目关系;
contest_problem
表如下图(仅显示前几条):
现已构建contest_problem
表,结构信息如下:
SELECT * FROM problem
WHERE EXISTS(
SELECT * FROM contest_problem A, contest_problem B
WHERE A.problem_id = 1009 AND A.contest_id = B.contest_id AND problem.problem_id = B.problem_id
)
第17关 用 EXISTS 实现查询参与过所有比赛的选手信息
任务描述
用EXISTS
实现查询参与过所有比赛的选手信息相关知识
1、users
为选手信息表;users
表如下图(仅显示前几条):
现已构建users
表,结构信息如下:
2、contest
为比赛信息表;
contest
表如下图(仅显示前几条):
现已构建contest
表,结构信息如下:
3、solution
为选手提交的题目解答
solution
表如下图(仅显示前几条):
现已构建solution
表,结构信息如下:
SELECT users.user_id,reg_time,name
FROM users
WHERE NOT EXISTS(
SELECT * FROM contest
WHERE NOT EXISTS(
SELECT * FROM solution
WHERE user_id=users.user_id AND contest_id = contest.contest_id
)
);