我有两个问题:
select m.name, count(distinct a.kursnr)
from trainer t
left outer join mitarbeiter m
on t.svnr = m.svnr
left outer join einzeltraining e
on t.svnr = e.trainer
left outer join abhaltung a
on t.svnr = a.trainer
group by m.name, t.svnr;
select m.name, count(e.trainer)
from trainer t
left outer join mitarbeiter m
on t.svnr = m.svnr
left outer join einzeltraining e
on e.trainer = t.svnr
group by m.name, e.trainer;
第一个返回正确数量的课程(kursnr),第二个数字表示培训师掌握的正确个人课程数量(einzeltraining)。但是,我不能创建一个在一个表中显示这两个值的SQL语句。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
虽然可能有更有效的方法来实现这一点,但我想向您展示组合共享一个共同字段的任何两个查询的简单方法,例如:
select coalesce(q2.name, q1.name) As Name, q1.KursnrCount, q2.TrainerCount
from
( --original first query
select m.name, count(distinct a.kursnr) as KursnrCount
from trainer t
left outer join abhaltung a
on t.svnr = a.trainer
left outer join mitarbeiter m
on t.svnr = m.svnr
left outer join einzeltraining e on svnr = e.trainer
group by m.name, t.svnr
) q1
full join
( --original second query
select count(e.trainer) as TrainerCount, m.name
from trainer t
left outer join einzeltraining e
on e.trainer = t.svnr
left outer join mitarbeiter m
on t.svnr = m.svnr
group by e.trainer, m.name
) q2 on q2.name = q1.name
您还可以使用内部联接或左联接,而不是完整联接,具体取决于这些查询中的名称字段的匹配方式。