2015-01-26 57 views
-1

Im新的数据库和从未使用的Access 2007之前,我有语法明智的麻烦。这是信息简单的SQL查询语句的语法错误

Teacher = [CourseN, Quarter,TeacherName] 
Course = [CourseN,CourseName, Nunit) 
Section = [CourseN, Quarter , DayTime, RoomN]/ Examples of DayTime: M2:00AM, 
W4:50PM, and T8:00PM. Note that DayTime is represented as a string. 
Student = [studentName, CourseN, Quarter] 

问题

12.Use“*”列出CourseN,CourseName,NUnit的,区,TeacherName通过CourseN升序每门课程的,CourseName下降。

我的回答

SELECT CourseN, CourseName, Nunit, Quarter, TeacherName 
FROM * 
ORDER BY CourseN ASC, CourseName DESC; 

但是这是给我的FROM子句一个错误,我怎么能解决这个语法错误?还是我不能这样做?任何信息将是伟大的,谢谢

编辑:我知道我可以做到这一点吧?

SELECT C.CourseN, C.CourseName, C.Nunit, T.Quarter, T.TeacherName 
FROM Course C, Teacher T 
WHERE T.CourseN = C.CourseN 
ORDER BY C.CourseN ASC, C.CourseName DESC; 
+0

您的问题被设置是愚蠢的。首先,你不能“使用*”来做到这一点,其次,由条件(名称)决定的第二个顺序是无意义的,因为CourseN是主键,因此是唯一的 - 按顺序排列所有后续条件无关 – Bohemian 2015-01-26 23:32:22

+0

是啊我想这个老师是一个70岁的终身教师,只是不再在乎,它真的很混乱@波希米亚,但第二个为什么我这样做,它没事吧? – 2015-01-27 02:37:29

+0

是的,它会工作,但你应该使用正确的连接语法 - 你使用的语法是25年前(不夸张)弃用(不夸张) – Bohemian 2015-01-27 04:37:45

回答

1

您不能将*置于FROM子句!您必须明确定义您想要使用的表。

第二个想法:尽管您可以将WHERE子句中定义表间的关系,它的更好(或至少更清晰),如果你定义使用INNER JOINFROM子句中的关系,:

select c.courseN, c. courseName, c.Nunit, t.quarter, t.teacherName 
from course as c 
    inner join teacher as t on c.counrseN = t.courseN 
+0

我听说过加入条款,但我们没有在课堂上报道它,但如果我们可以使用它,@Barranka第二种方式没问题,对吗? – 2015-01-27 02:38:02

+0

是的,它是正确的。据我所知,它被称为“隐式连接”。内连接定义了显式连接。 ' – Barranka 2015-01-27 02:53:41

+0

好的,谢谢@Barranka,生病就这样离开,因为它不是我想要得分,因为我没有使用两个顺序的子句,但谢谢! – 2015-01-27 02:55:02