【问题标题】:Subqueries for each row每行的子查询
【发布时间】:2013-09-13 15:34:47
【问题描述】:

使用这些表格:

*学生 {'s_id','s_name,'...} ,班级 {'c_id','c_name',...} student2class {'s_id','c_id'},成绩 {' s_id','c_id','等级'}*

是否可以执行查询(嵌套查询?)将班级名称作为副标题,然后将所有学生(该班级的)和成绩,下一个班级名称作为副标题...

我需要的结果是:

数学

约翰 .... C

安娜 .... B

[...]

生物学

安娜 .... C

杰克 .... 一个

[...]

对于类中的每一行,我将有一个子查询来获取与该类相关的所有数据

【问题讨论】:

  • 我相信查询的目的是获取(获取)所有需要的数据。表示层(客户端应用程序、报告编写器等)应该担心确切的格式。
  • @ShreyosAdikari 这绝对不是 DBA 应该研究的东西(它适合这里)。无论哪种方式,PM77-1 都是对的,这应该在表示层完成

标签: sql nested subquery


【解决方案1】:

不需要任何子查询。您可以通过这种方式获取数据:

SELECT c_name, s_name_, grade
FROM student, class, grades
WHERE student.s_id = grades.s_id and class.c_id = grades.c_id
ORDER BY c_name

正如其他人已经说过的,结果的呈现取决于您的系统/工具。这是 Microsoft Access 解决方案的链接: http://office.microsoft.com/en-001/access-help/create-a-grouped-or-summary-report-HA001159160.aspx

【讨论】:

  • 订购!!当然!...简单直接。谢谢雷米
【解决方案2】:

解决方案应该在您的客户端代码中实现,而不是在数据库中。从数据库中你应该只得到一个简单的表格格式数据(主题、学生、年级)

然后将上面的记录集转换成你想要的格式: 对于 C# 中的示例,您可以将记录集转换为查找

var Lookup = DataSet.Tables[0].Rows.ToLookup(x => x["subjectColumn"]);

现在您可以循环查找并格式化结果

foreach(查找中的变量等级)

{

subject = Grade.Key;

...

}

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多