2011-04-06 60 views
1

我對我的某個作業分配有特定要求。我需要拿出一份學生名單,並打印出12個或更多學分的所有學生。學分存儲在一個單獨的表中,並通過第三個表 引用基本上,一個學生表,一個有小時的班級表,以及一個與學生ID相匹配的登記表匹配到課程編號在Delphi中過濾MySQL結果

我使用了一個SUM聚合分組表中的第一個名字,並且所有的工作都很好,但是我不太瞭解如何過濾不到12小時的人,因爲SQL不知道每個人在查詢完成之前會花費多少小時。

我的字符串看起來像這樣


'SELECT Students.Fname, SUM(Classes.Crhrs) AS Credits 
FROM Students, Classes, Enrolled 
WHERE Students.ID = Enrolled.StudentID AND Classes.ID = Enrolled.CourseID 
GROUP BY Students.Fname;' 

它工作正常,並顯示在Delphi項目併網發電,但我不知道在哪裏可以從這裏去篩選結果,因爲每個查詢運行都會刪除前一個。

+0

的SQL語法您用來連接表的作品,但被稱爲「隱含「連接。還有一個明確的連接語法,請參閱http://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins – 2011-04-06 12:28:52

回答

8

由於這是一個作業練習,我將給出一個非常簡短的答案:查閱文檔HAVING

+0

非常感謝您的指導。這就是我一直在尋找 – Golem21 2011-04-06 18:13:12

2

除了像Martijn建議的那樣直接從SQL獲得所需的結果外,Delphi數據集還可以在「客戶端」上過濾數據。檢查Filter屬性和OnFilter記錄。

無論如何,請記住它通常是更好地應用最佳的「過濾器」使用正確的SQL數據庫端,然後用客戶端的「過濾器」僅允許在已經獲取的數據集不同的看法,而無需重新查詢相同的數據,從而節省一些數據庫資源和帶寬(只要在服務器上的數據並沒有改變。同時...)

+0

我會考慮未來的項目。真的這個作業非常混亂,我更喜歡使用SQL語句,而不是通過Embarcadero的Delphi選項尋找。非常感謝您的幫助。 – Golem21 2011-04-06 18:20:09