2011-02-24 62 views
0

設想一所大學,學生通過網站在線註冊課程。 每門課程可能有一個指定的最大數量的入學學生,入學是根據誰先註冊。 。 例如,在與15個可用座位,只有誰註冊的第一個該課程通過網站將獲得的15名學生的「藝術」類MySQL:根據先到先得的原則分配學生中有限的座位

基本上有三種MySQL表: 用戶(其實學生UID作爲唯一的用戶ID) 課程(課程規範像標題和班級大小; cid(course id)是主鍵) links_users_courses(將包含三列uid,cid,reg_date,其中reg_date是反映用戶何時使用的日期時間變量uid註冊課程cid)

我現在正在尋找一個MySQL解決方案來顯示給用戶A(uid = 100)的問題不僅是他試圖獲得座位的所有課程的列表中,這將沿着

select cid,coursetitle from links_users_courses left join courses using(cid) where uid=100 

線條簡單明瞭,但他也無論是在課程獲得與否,這就是他的時間排序位次是否爲每門課程的指定班級規模以下。

最後,他應該顯示三列:課程ID(cid),coursetitle和狀態(入伍,等候名單),等候名單意味着他超過了某個班級的門檻。

回答

0

可能這一切都在一個SQL查詢(如果你真的想我會把它放在一起),但我不認爲很多人會推薦它。你需要考慮一下你的過程,我會建議。您是否使用過程語言來生成輸出(php,python等)?如果是這樣,你可能會更好地採取更實用的方法。另一種方法,如果你想保持非常接近數據庫,將使用視圖來處理一些中間階段。但是,在一個SQL查詢中完成這一切可能不是要走的路(除了可能作爲練習)。

+0

@Galz:自從什麼時候作業標籤不被允許了?它現在有6623個條目。 – Konerak 2011-02-24 14:15:54

+0

嗨,我使用PHP 5.3作爲過程語言。我很樂意看到你引用的任何(或兩種)類型的解決方案,尤其是隻有SQL的版本,這對我來說可能更難以自己弄清楚,然後是程序性問題。 – Steve06 2011-02-26 11:43:44