一般来说,我对数据库很新,我正在努力学习。我理解一些基础知识,并且主要使用Access内部函数来使事情有效,因为这是我理解的。
我正在慢慢学习SQL,并且在尝试阅读其他问题的答案时,我在为我的数据库工作时会遇到很多麻烦。
我有一个名为“应用程序数据”或[应用程序数据]的表(我被告知在编写数据库时我不应该使用空格,但此时要回过头来纠正太多了)我正在尝试为每个拥有一个学生的学生提供最新的申请。我已经尝试在日期字段上使用最后一个,在ID字段上使用Max,但两个结果最终只产生一个返回,无论哪个适合整个表,而不是每个学生最新的。
我已经尝试了其他一些东西,并且已经阅读了好几天,但似乎我需要一种叫做“内部联接”的东西来让它回归我需要的东西。我不确定那是什么或它是如何工作的。
无论如何,我在SQL中的查询是:
SELECT DISTINCTROW [Application Data].[Most Recent Application Term]
,[Application Data].[Most Recent Application Year]
,[Application Data].[Application Date]
,[Application Data].[Application Status]
,[Application Data].[Application Decision]
,[Application Data].Degree
,[Application Data].Specialization
FROM [Application Data]
WHERE (
(
([Application Data].ID) = (
SELECT Max(ID)
FROM [Application Data]
)
)
)
GROUP BY [Application Data].[Most Recent Application Term]
,[Application Data].[Most Recent Application Year]
,[Application Data].[Application Date]
,[Application Data].[Application Status]
,[Application Data].[Application Decision]
,[Application Data].Degree
,[Application Data].Specialization
,[Application Data].PCID
HAVING ((([Application Data].[Application Date]) IS NOT NULL))
ORDER BY [Application Data].PCID DESC
,[Application Data].[Application Date] DESC;
此时我完全迷失了,但它会进入另一个表格,从中更新所有报告所依据的主表格字段。
我非常感谢任何帮助。
答案 0 :(得分:1)
首先是一些关于初学者的一般建议: 保持桌子清洁和标准化,避免空间。一个表中的每个值都与主键有关,而没有其他任何内容。 在您的示例中,“最近的应用程序”实际上是指申请人而不是应用程序的ID。因此,将其移动到另一个表或只是将其保留在查询中。
我对您的数据库设计的建议:
因此,您的应用程序ID包含您所需的信息,并将通过Student_ID链接到tbl_student。 “最近申请年份”可以添加到tbl_student中,并可能通过UPDATE查询自动更新。
现在,让我们解决您的问题:
首先,如上所述,您的查询缺少学生信息,因此,它应该获取最大值的字段的信息。 您的内部查询将仅输出单个值 - 所有值的最大ID或日期,因为它不包括用于分组的第二个字段。 将学生信息添加到表格并查询:
math.h
这应该会产生一个查询,向您显示最新的应用程序以及存储在表[Application Data]中的有关该特定应用程序的所有信息。您可能希望运行内部查询(括号内的所有内容)以查看其工作原理。
这通常可以帮助您理解查询和SQL:尝试在草图视图中一步一步地构建更复杂的查询,并将它们存储在数据库中。完成所有工作后,您可以将SQL代码从第一个子查询复制到主查询,并尝试截断不必要的内容。