這是怎麼回事?我試圖得到一個SQL查詢返回一些數據。 查看具體情況:SQL查詢返回子類別內的所有課程
我有一套類別,類別統一和組織,這些是我的主要類別,在這些類別中我有更多的子類別。數學,舞蹈等,在這些子類別中我還有一些,例如擴展,畢業,其他等。在這些類別中,我有一些課程,我在這裏稱之爲葉課程。應用數學,和/或我有另一個子類,例如math2016.2,math2017.1等,裏面可以有課程和/或其他子類別。所以你可以看到我的主要類別中可能有更多的子類別。
接下來會發生什麼,我得到2個查詢,在我的第一個中,我只能返回我的葉子課程,換句話說,我可以返回直接與我的子類別相關的課程擴展(這是我想要的類別返回裏面的所有課程),但是我不能在Extesion內的子類別中返回課程,換句話說,我無法返回math2016.2和math2017.1中的課程。
在我的第二個查詢中,我可以返回子類別數學/擴展/ *中的所有課程,但問題是,我必須在查詢中只傳入一個子類別ID,換句話說,我必須傳遞在一個查詢中的子類別數學和另一個查詢我必須通過子類別的舞蹈的id,因爲我有很多子類別不是trival做到這一點。
所以我想這些查詢我可以被轉換爲只有一個,並在只有一個查詢我返回所有擴展子類別內的所有課程,我該怎麼做?
的查詢如下波紋管:
1)一個子類別擴展
SELECT ct.id, c.fullname, ct.name, ct.path, COUNT(ct.id) AS coursecount
FROM mdl_course_categories ct
INNER JOIN mdl_course c ON c.category=ct.id
WHERE ct.name like "Extension%"
GROUP BY ct.id, ct.name, c.fullname, ct.path
ORDER BY COUNT(ct.id) DESC
2)的返回葉課程返回是一個特定子類別
SELECT ct.id, c.fullname, ct.name, ct.path, COUNT(ct.id) AS coursecount
FROM mdl_course_categories ct
INNER JOIN mdl_course c ON c.category=ct.id
WHERE ct.path like "/2/36/76%"
GROUP BY ct.id, ct.name, c.fullname, ct.path
ORDER BY COUNT(ct.id) DESC
在內部的所有課程表mdl_course_categories我有列路徑,這個列有子類別的路徑,例如Unity是id 2,所以路徑是/ 2,數學是id 4,然後路徑是/ 2/4(這意味着數學是在統一內),math2017.1是id 6,所以路徑是/ 2/4/5/6
+----+------------+----------+
| id | course | path |
+----+------------+----------+
| 2 | unity | /2 |
| 4 | math | /2/4 |
| 5 | extension | /2/4/5 |
| 6 | math2017.1 | /2/4/5/6 |
+----+------------+----------+
我也不得不說,子類擴展有不同的ID給每個類別了他,那就是,擴展中的數學可以有ID爲5,但延長的舞蹈裏面有另一個ID完全不同,沒有模式。
不,它不工作,只是重複3次的結果。我正在考慮遞歸地獲取它,但我仍然不知道如何去做。 – crbroflovski