因此,在我的活动表中有一项名为“电话技巧”的活动
列活动.act_id' 174'
列活动。电话技巧
它在此活动中没有任何主管,所以当我使用下面的查询输出数据时,我认为它只有活动名称,然后是右边的空白列。
不幸的是,我只是获得了其他5项活动及其主管技能。
这是我的疑问:
SELECT
a.des 'Activity Name',
group_concat(DISTINCT e.exp_name separator ', ') 'Supervisors Skills'
FROM activity a
JOIN department d
on a.act_id = d.act_id
JOIN supervisor s
on d.sup_id = s.sup_id
JOIN skills sk
on s.sup_id = sk.sup_id
JOIN expertise e
on sk.exp_id = e.exp_id
GROUP BY a.act_id
ORDER BY a.des, e.exp_name ASC;
我错过了什么,将最后一个活动名称放在右边的空白列?
答案 0 :(得分:1)
它在这项活动中没有任何主管,所以当我出局时 使用下面的查询数据,我以为它只会有 活动名称然后是右边的空白列。
所以你需要left joins
:
SELECT
a.des 'Activity Name',
group_concat(DISTINCT e.exp_name separator ', ') 'Supervisors Skills'
FROM activity a
LEFT JOIN department d on a.act_id = d.act_id
LEFT JOIN supervisor s on d.sup_id = s.sup_id
LEFT JOIN skills sk on s.sup_id = sk.sup_id
LEFT JOIN expertise e on sk.exp_id = e.exp_id
GROUP BY a.act_id
ORDER BY a.des, e.exp_name ASC;
答案 1 :(得分:0)
SELECT子句的这一部分为您提供了其他五项活动:
DISTINCT e.exp_name separator ', ')
其他人必须解释在显示“最后一个活动名称”时需要做些什么。根据问题中的信息,我不清楚这一点。