sql - SQL:用于两级聚合的 INNER JOIN
问题描述
我的问题是关于返回课程列表的 SQL 查询(见图)。
而不是class_id
,我想打印类的名称。类名存储在 table 中classes
。我已经尝试过INNER JOIN
,但不幸的是我还没有找到解决方案。
select
group_concat(ids) as ids,
group_concat(class_id) as class_ids,
teacher, name, weekday_hours
from
(select
l.class_id, l.teacher_id, l.name,
group_concat(l.weekday, ':', l.hour order by l.weekday, l.hour) as weekday_hours,
group_concat(l.id order by l.id) as ids
from
lessons l
group by
l.class_id, l.teacher_id, l.name) l
group by
teacher, name, weekday_hours;
解决方案
你想join
在子查询中,然后name
像你一样处理class_id
:
select group_concat(ids) as ids,
group_concat(class_name) as class_names,
teacher, name, weekday_hours
from (select l.class_id, c.name as class_name,
l.teacher_id, l.name,
group_concat(l.weekday, ':', l.hour order by l.weekday, l.hour) as weekday_hours,
group_concat(l.id order by l.id) as ids
from lessons l join
classes c
on l.class_id = c.id
group by l.class_id, c.name, l.teacher_id, l.name
) l
group by teacher, name, weekday_hours;
推荐阅读
- c# - C# 从 Excel 中读取实际单元格值,其中日期格式为长日期,日历类型为西方
- c# - 如何从高度计算弹丸的射程?
- python - 在 Ubuntu 上绘图时出现 Python3 Flask Pandas 分段错误
- android - Flutter 中的 FirebaseAuthSettings
- java - 捕获异常后如何保持我的代码运行(Java)
- reactjs - Reactjs - 如何使用useCallback、useMemo 优化性能
- android - 生成 apk 后的动态 google-service.json
- android - 如何使用 BroadcastReciver 从非运行的 android 应用程序启动活动?
- google-home - reportStateAndNotification 是否支持多设备状态报告?
- instagram - 无法获取 Instagram 访问令牌的访问代码