2017-10-19 83 views
-1

問題:對於所有300個級別的課程(300-399),列出課程編號,前提課程編號和前提課程描述。在列中選擇列SQL

對不起,如果這是棘手的理解,我甚至不知道如何短語我的問題。基本上,我試圖弄清楚這個問題,我完全不知道在列出必備說明時從哪裏開始。

我只需要顯示與主課程相關的前提描述。

下面是我到目前爲止,絕對不完整。該鏈接是將SELECT *查詢輸出到課程表的示例。

只是爲了澄清:每個Course_NO都有一個先決條件列出。但是,前提條件也是課程表中列出的Course_NO

感謝您提前提供任何幫助,我很感激!

Example Course Table

SELECT 
    Course_No, 
    Prerequisite 
FROM COURSE 
WHERE 
    Course_NO < 400 
    AND Course_NO >= 300 
+0

嗨希拉里,歡迎來到Stack Oveflow。你能不能以這種方式使用圖像並輸入一些樣本數據。圖片鏈接可能會死亡,並且在這裏我們總是可以引用它的代碼,如果有人有同樣的問題 – Moseleyi

+0

一門課程可以有多個1 prereq? – SQLChao

+0

不,每個課程只有一個prereq – Hilary

回答

0

我會做的是使用一個表的別名C1爲原始查詢。然後,我會使用表別名C2來查詢課程描述的前提課程編號。注意我使用了兩個表別名--C1和C2--將C2.Course_No號碼與C1.PREREQUISITE號碼相關聯。 C2.DESCRIPTION從此子查詢中選擇。子查詢被賦予列別名[Prerequisite Course Description];請注意,如果沒有列別名,則該字段將具有空白標題。

你應該使用遞歸嗎?在這種情況下,你可能不應該嘗試這樣的解決方案,除非你明確告知這樣做。

SELECT C1.Course_No 
     ,C1.PREREQUISITE, 
     ,(SELECT C2.DESCRIPTION 
      FROM COURSE AS C2 
      WHERE C2.Course_No = C1.PREREQUISITE 
     ) AS [Prerequisite Course Description] 
    FROM COURSE AS C1 
    WHERE C1.Course_NO < 400 
     C1.AND Course_NO >= 300 
0

這可以做爲self join

SELECT 
    MainCourse.Course_No, 
    PreRequisiteCourse.Description as PreRequisiteDescription 
FROM COURSE as MainCourse 
Inner Join Course as PreRequisiteCourse 
on MainCourse.Prerequisite = PreRequisiteCourse.Course_No 
WHERE 
    MainCourse.Course_NO Between 300 And 399 

如果您有要在結果中包含一些課程沒有先決條件,你應該Inner join更改爲Left Outer Join