2011-04-06 37 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