首页 > 解决方案 > 如何修复 SQL 连接中的错误?

问题描述

培训班

讲师

部分

学生

学生时间表

StudentSchedule 第 2 部分

使用提供的数据库,编写和执行 SELECT 语句以获取以下信息:

简单连接

部分表

  1. 讲师 6 的教学总学分是多少?

我尝试了什么:

select sum(c.credithours) 
from courses c
join sections s on c.courseid = s.courseid
join instructors i on s.instructor = i.ID
                   and s.instructor = 6; 

错误:

FROM 子句中的语法错误

  1. 请提供 1147 室所有课程的 CRN、课程名称、描述和学时、上课时间和房间号。是否有任何冲突?

我尝试了什么:

select CRN, CourseName, description, credithours, timedays, roomno
from courses c
join sections s on c.courseid = s.courseid
join instructors i on s.instructor = i.ID
                   and roomno = "F1147";

错误:

FROM 子句中的语法错误

学生日程表

  1. 列出为 CRN=30101 注册的部分的学生姓名和 ID。(列出学生的名字、姓氏、ID 和 CRN)

我尝试了什么:

select firstname, lastname, ID, CRN 
from studentschedule ss
join students s on ss.student_id = s.id
                and CRN = 30101;

错误:

FROM 子句中的语法错误

  1. 请列出 CRN=30115 部分中的所有学生姓名(名字和姓氏)。

我尝试了什么:

select firstname, lastname, ID, CRN 
from studentschedule ss
join students s on ss.student_id = s.id
                and CRN = 30115;

错误:

FROM 子句中的语法错误

  1. 请列出 id=6 的学生正在参加的所有部分的所有部分信息。

我尝试了什么:

select s.* 
from studentschedule ss
join sections s on ss.CRN = s.CRN
                and studentid = 6;

错误:

FROM 子句中的语法错误

  1. 高级(多表):请列出课程名称、CRN 以及 CRN=30115 部分中所有学生的姓名。

我尝试了什么:

select firstname, lastname, ID, CRN, coursename
from studentschedule ss
join students s on ss.student_id = s.id
join sections sec on ss.CRN = sec.CRN
join courses c on sec.courseid = c.courseid
               and CRN = 30115;

错误:

FROM 子句中的语法错误

标签: sqljoininner-joinself-joinclause

解决方案


Access 本身没有 JOIN。

您必须使用 INNER JOIN、LEFT JOIN 或 RIGHT JOIN - 否则您将收到该错误。

例如:问题 1 的解决方案是:

SELECT Sum([CreditHours]) AS totalHours
FROM Courses INNER JOIN Sections ON Courses.CourseID = Sections.CourseID
WHERE (((Sections.Instructor)=6));

请注意,您根本不需要教练表,除非他们询问有关教练的姓名或其他详细信息。

另请注意:我不会担心在这样一个简单的查询中使用短表名进行优化。


推荐阅读