Sql Query给出了错误的答案

时间:2016-02-18 15:54:09

标签: mysql

我在运行查询时一直得到错误的答案。我已使用SectionLEFTINNER,将FULL更改为=并将LIKE更改为yes,但仍保留得到同样的错误答案。

no

我注意到我错过了一个Course_ID,所以我确实在

中添加了它
SELECT Is_Class_Rep,Course_Name
From Students
Left JOIN Course
ON Course.Course_ID=Students.Course_ID
Where Is_Class_Rep LIKE '%No%';

INSERT INTO Students
(Student_ID, First_Name, Last_Name, Date_Of_Birth,Phone_Number,Email_Address,Year_In_College,Is_Class_Rep,Date_Of_Training,Role_SU,Staff_ID)
Values
(3,'Hillay','Clinton','1984-04-06',0869456633,'hilldog@whitehouse.com','2nd Year', 'No','','',''),
(4,'Bill','Clinton','1983-06-06',0853215896,'oraloffice@whitehouse.com','3rd Year', 'Yes','2015-10-21','Clubs & Societies','2'),
(5,'Donald','Trump','1987-05-12',086321321,'combeover@whitehouse.com','1st Year', 'Yes','2015-10-21','',''),
(6,'Stan','Smith','1990-04-20',0875846842,'ss@fbi.com','2nd Year', 'No','','',''),
(7,'Stan','Marsh','1989-01-26',086845665,'wendy@southpark.com','1st Year', 'Yes','2015-10-21','',''),
(8,'Bruce','Wayne','1991-04-10',0878989856,'iamthebatman@gotham.com','3rd Year', 'No','','',''),
(9,'Fred','Claus','1992-02-17',084258258,'onceayear@northpole.com','3rd Year', 'Yes','2015-10-21','Entertainment','3'),
(10,'Zack','Smith','1988-10-18',086799878,'wheresmirig@gogle.com','1st Year', 'No','','',''),
(11,'Hugo','Cruz','1984-05-05',0851597532,'hugo@yahoo.com','2nd Year', 'Yes','2015-10-21','Equality','4');

我有2个学生和课程表,我已填充了两个。在学生中,我有一个名为Is_Class_Rep的列,我输入了约束,只允许输入是或否,我确保其中一个课程没有课程代表。外键是课程ID。在我的第二个表格中,我有我的课程,我尝试创建一个查询,该查询将给出一个没有课程代表的课程列表,但每次我运行查询时,它只列出所有课程,或者在所有课程对面,或者没有在课程对面。

1 个答案:

答案 0 :(得分:1)

您现有的查询返回的课程列表中至少有一个学生不是一个班级代表(对于每个不属于班级代表的学生列出一次,这是一个很好的衡量标准。)

您的查询应该选择一个没有学生作为班级代表的所有课程的列表 - 一种方法是使用NOT EXISTS:

SELECT Course_Name
From Course as C
WHERE NOT EXISTS
(SELECT 1 
 FROM Students as S
 WHERE C.Course_ID=S.Course_ID AND S.Is_Class_Rep = 'Yes');