0

我有一个刚刚在课堂上分配的 JDBC 项目,我们应该通过 JDBC Java Eclipse 对我们的大学数据库执行此查询:

SELECT dept_name, COUNT(*) AS COUNT FROM student GROUP BY dept_name;

并使用返回的 resultSet 查询结果集:

HAVING COUNT = (SELECT MAX(ACOUNT) AS MAXCOUNT
                FROM (SELECT dept_name, COUNT(*) AS ACOUNT
                      FROM student GROUP BY dept_name) AS ATable);

我在我的书中和通过谷歌到处查看,但找不到有关如何执行此操作的示例的教程。你们可以指出我的任何链接/文档或起点吗?

解决方案编辑:我终于得到了老师的澄清,他的意思是在我的 java 程序中执行 SQL 语句并循环遍历结果并使用 java 并筛选出第二个 SQL 语句将获取的相同信息,如果它附加到原始陈述。感谢那些花时间尝试和帮助的人。

4

1 回答 1

1

你的作业只提供了伪代码,“执行”这个词一定是错误的。正如其他人所建议的那样,“对结果集执行查询”是没有意义的。

假设您的导师的意思是“过滤掉”,您可能需要运行两个单独的语句(SELECT dept_name...SELECT MAX(...),然后遍历第一个结果集以搜索与第二个结果集匹配的结果。

伪代码:

RSet1 = query("SELECT dept_name, COUNT(*) AS COUNT FROM student GROUP BY dept_name;");
RSet2 = query("SELECT MAX(ACOUNT) AS MAXCOUNT ...");
RowInR2 = RSet2[0]; // first and only row

foreach RowInR1 in RSet1
    if (
        RowInR1.count = RowInR2.maxcount
    ) {
        return RowInR1; // this is your result
    }
}

请记住,除了教育目的之外,这种方法是荒谬的。可以仅在一个查询中提取此数据(单行),而无需从 [Query 1] 提取和解析结果(此查询是您的两个查询的精确串联)。

于 2013-10-16T15:00:23.640 回答