2015-01-26 86 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