2012-12-07 86 views
-1

我使用MySQL並試圖爲我的學校項目編寫一個PHP腳本。查詢多個表MySQL

有一個名爲教訓包含此列:

-id 
-lessonid. 
-studentid 

我也有筆記兩個不同的表和公告 公告及註釋包含這些列:

-id 
-lessonid 
-content 
-createdtime 

我需要按創建時間從最新到最舊排列公告和筆記,但也需要顯示學生所學的所有課程。

例如:一個學生需要數學和物理課。我需要向他/她展示物理和數學的筆記和公告,並且所有項目都應該按日期排序。 (如時間線)。當然,我不會向他/她展示化學課的筆記和公告。如果我可以說它是名單上的備註或公告,這將是一件好事。

你能幫我寫SQL和PHP代碼嗎? 謝謝。

編輯:這是我卡住的地方: 我組合了兩個表並按日期排序。但不能將它們與學生所學的課程結合起來。

SELECT title, created, lessonid FROM (SELECT title, created, lessonid FROM notes UNION SELECT title, created, lessonid FROM announcements) as a ORDER BY created DESC 
+0

祝你好運,狼羣來了。 – Bnjmn

+1

你應該展示你試過的東西,我們可以從那裏幫你 – kennypu

+0

謝謝,我已經更新了這篇文章。 – cblue

回答

0

首先,感謝您告訴我們這是一個學校項目 - 因此我不會給您答案。如果是在項目中,那麼你的老師應該給你提出一個解決方案的概念。

你的問題很好地結合在一起,我可以看到如何解決它,但...這是你的項目,所以你需要有一個裂縫,並張貼你想出的東西。

我會給你一些提示,讓你開始。

您需要一個查詢來組合公告和備註表。然後,您需要將課程中的數據分組並將其加入到學生中。這是所有基本的SQL。

祝你好運。發佈你想出的東西。

+0

謝謝。這是我堅持的地方。我已經合併了兩個表並按日期排序。但不能將它們與學生所學的課程結合起來。 SELECT title,created,lessonid FROM(SELECT title,created,lessonid FROM notes UNION SELECT title,created,lessonid FROM announcements)as ORDER BY created DESC – cblue

+0

查看你的筆記/教科書/ google的命令'INNER JOIN' –

+0

我認爲這不是它的學校項目,但他正在爲一所學校做一個項目......告訴他解決方案的人@Dale –

0

我也會按照同學們的建議去做,而不是爲你做腿腳。但不會讓你空手而歸,所以會給你這個概念。 有一個叫做第三範式的東西,我們根據這個概念決定了多少個表,所以如果它是一個大的數據庫,那麼把名字分隔開來,並且把姓名分開,因爲很多人都在分享他們,所以節省了空間和冗餘等,所以一個人的personid具有personid爲主,並且具有姓氏外鍵來引用姓氏表,我們通常將其命名爲lastNameRef,類似firstNameRef。所以現在每個人都有很多課,每個班都有很多人(學生)。所以這是一個多種多樣的關係 - 我們創建了一個全參考表來解決這個多對多的問題。所以有一個表的class id爲主鍵,所以現在你創建一個所有的參考表,其中一個recordId作爲主鍵(僅用於同名)和personRef(指personId在人表中)和classref(指的是classId在類表中)如果一個人有兩個類,另一個具有相同personId但具有不同類ID的條目,則最後可以從人員表中查詢人員姓名,並從類表中查詢班級名稱,並在他們的外鍵上創建連接但是使用所有三個表格,結果是(JOHN MATH,JOHN SCIENCE)等,同樣的方式你會在人物表中顯示約翰搜索名字的所有註釋,並在課桌表中註釋,並在註釋表中註釋