【问题标题】:Multiple queries with results needed from each多个查询,每个查询都需要结果
【发布时间】:2016-08-25 20:24:10
【问题描述】:

假设我有两个结构如下的数据库:

ID            CLASS          STUDENT_COUNT
1             Math              0
2             Biology           2
3             Algebra           1
4             Literature        5

ID            CLASS_ID          NAME
1             1                 Ted
2             1                 Mark
3             3                 Sally
4             4                 Sam

我正在尝试为 getClassById(int id) 编写一个查询,该查询将返回一个带有 Class 变量和 List 变量的对象。到目前为止,我能想到的唯一方法是使用 2 个查询。第一个会这样查询:

select id, class, student_count from t_classes where id = an_id;

这将返回足够的信息来填充 Class 变量。然后我需要对学生表进行第二次查询才能填充列表:

select id, name from t_students where class_id = an_id

请原谅我极端的 SQL 新手,但还有其他方法吗?

【问题讨论】:

  • 使用内部联接在单个语句中关联 2 个表。这是 SQL 的基础知识,你会想学习这个,而不仅仅是回答。在 table1.key = tables2.key 上从 table1 内部连接 ​​table2 中选择字段,其中 id = an_id。 id 和 class_id 是你的键。

标签: sql postgresql sqlite


【解决方案1】:

此查询将为每个学生提供一行:

select c.id, c.class, c.student_count, s.id, s.name 
  from t_classes c
  join t_students s on s.class_id = c.id
 where c.id = an_id;

如果您想要其他方式的结果集,现在让我们来。

【讨论】:

  • 因此,当我将结果集解析为类 POJO 时,我只会查看第一行的 c.id 和 c.class 并忽略其余部分,因为它们都是相同的?然后我会遍历所有字段并构建我的 List?这比我上面运行的 2 个查询更有效吗?
  • 在这种情况下,最好使用 2 个查询,因为您需要填充第二个列表(学生)。
猜你喜欢
  • 2011-10-12
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 2018-10-17
相关资源
最近更新 更多