为我的 SQL 查询获取错误的输出 - 为啥会这样?

Posted

技术标签:

【中文标题】为我的 SQL 查询获取错误的输出 - 为啥会这样?【英文标题】:Getting the wrong outputs for my SQL queries-why is it so?为我的 SQL 查询获取错误的输出 - 为什么会这样? 【发布时间】:2020-04-20 05:15:17 【问题描述】:

我有 8 张桌子-

Course(Courseno,Coursename,dept)
Section(Courseno,Sectionno),
Student(ssn,firstname,lastname,street,zip,city,state),
Enrolls(ssn,Sectionno,Courseno),Exam(Courseno,Sectionno,Examno),
Clas-s-room(roomno,building,capacity),
conducted_in(roomno,building,Courseno,Sectionno,Examno) 
Takes(ssn,Courseno,Sectionno,Examno,result)

我正在写两个查询。第一个查询是获取有 2 个或更多学生的课程名称和课程编号。我把它写成

mysql> SELECT c.CourseNo,Course_Name FROM STUDENT s INNER JOIN ENROLLS e 
ON s.SSN=e.SSN INNER JOIN COURSE c ON e.CourseNo=c.CourseNo WHERE e.SSN>=2;

我得到的输出为

+----------+-----------------------+
| CourseNo | Course_Name           |
+----------+-----------------------+
| CSC11    | Computer Architecture |
| CSC12    | VLSI                  |
| CSC12    | VLSI                  |
+----------+-----------------------+
3 rows in set (0.00 sec)

对于第二个查询,它表示获取有关在构建“RVR”中进行的考试的信息(考试编号、课程编号和部分编号)。除此之外,还可以获得房间的容量、房间号和建筑物名称。 我把查询写成-

mysql> SELECT e.ExamNo,e.CourseNo,e.SectionNo,cr.RoomNo,cr.Building FROM EXAM e 
INNER JOIN CONDUCTED_IN ci ON ci.ExamNo=e.ExamNo INNER JOIN CLASS_ROOM cr 
ON cr.Building=ci.Building='RVR';

并得到输出为

空集,1 个警告(0.00 秒)

尽管表格中存在建筑物 RVR

由于我没有得到所需的输出,我犯了什么错误?请帮帮我。

【问题讨论】:

尝试使用 - 'RVR' 添加 where 子句,而不是在加入时使用它 【参考方案1】:

为您的Question 2 尝试以下操作,您尚未在查询中添加WHERE 条件。这是问题on cr.Building=ci.Building='RVR'

select e.ExamNo,
    e.CourseNo,
    e.SectionNo,
    cr.RoomNo,
    cr.Building 
from EXAM e 
JOIN CONDUCTED_IN ci 
on ci.ExamNo=e.ExamNo 

JOIN CLASS_ROOM cr 
on cr.Building=ci.Building

WHERE cr.Building = 'RVR';

对于Question 1,你忘了使用DISTINCTGROUP BY 也可以达到同样的效果。

SELECT 
    DISTINCT c.CourseNo,
    Course_Name 
FROM STUDENT s 

JOIN ENROLLS e 
ON s.SSN=e.SSN 

JOIN COURSE c 
ON e.CourseNo=c.CourseNo 

WHERE e.SSN>=2;

【讨论】:

谢谢..我让它运行了第一个呢?

以上是关于为我的 SQL 查询获取错误的输出 - 为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中的 Pivot 语法错误,为啥我得到不正确的结果?

为啥我的 SQL 查询会出现内部服务器错误?

Redshift上的SQL查询以获取第一个和最后一个值

为啥 Linq-to-sql 错误地删除了我的联合中的字段?

为啥当我的子查询无效时,此 SQL 查询会起作用? - 甲骨文 [重复]

为啥我的最高薪水查询有语法错误?