mysql - 从三个独立的表中收集数据,sql

标签 mysql sql sqlite

我有三个单独的表格,分别代表三周的学生出勤情况。我希望能够生成四列,按周分割每个学生的出勤情况。如果学生每周出席多次,则应添加出席的次数。此外,如果学生在一周内出席,而下一周没有出席,则当月出席的学生将获得 1(假设仅出席一次),而缺勤的学生将获得 0。我尝试了 count() 和 join 的多种变体,但没有成功。任何帮助将不胜感激。以下是截断的 fiddle :

http://www.sqlfiddle.com/#!9/b847a

这是我想要实现的目标的示例:

名称 |当前周|上周 |两星期前

宝拉 | 0 | 2 | 3

最佳答案

您应该只有一个包含一周一栏的表,而不是三个表。因此,自然地,针对您的请求的一种解决方案是使用 UNION ALL 即时构建它:

select
  name,
  sum(week = 'currentWeek') as currentWeek,
  sum(week = 'lastWeek') as lastWeek,
  sum(week = 'thirdWeek') as thirdWeek
from
(
  select 'currentWeek' as week, name from currentWeek
  union all
  select 'lastWeek' as week, name from lastWeek
  union all
  select 'thirdWeek' as week, name from thirdWeek
) all_weeks
group by name
order by name;

(如果你想连接三个表,你需要完全外连接,如果我没记错的话,MySQL不支持。无论如何,我的建议是改变数据模型。)

关于mysql - 从三个独立的表中收集数据,sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51094186/

相关文章:

c# - 使用 Entity Framework 6 将数据从数据库存储到本地

mysql - 创建一个 MySQL 存储过程以将文件添加到现有表的末尾

mysql - 根据从 varchar 字段中提取的子字符串进行数字排序

SQL 对每行中的列进行排序,并据此对行进行排序

python - 使用 Python 比较两个 sqlite 数据库

c++ - 如何填充数据库sqlite tablewidget

php - Doctrine 查询生成器 native mysql 变量

MySQL 多重搜索条件不返回结果,但如果删除最后一行则有效

sql - 动态 SQL 存储过程中的单引号处理

php - SQL选择最后一个查询中不重复出现的3个随机行