我有三个表以下列方式相互关联:
表结构如下:
id, nameid, host_id, nameid, session_id, name我想要实现的是会话数量和每个主机上的进程数量.为实现这一点,我尝试了以下查询,但输出错误.
select host.id,
count(sessions.id) as "session count",
count(process.id) as "process count"
from host as host
left outer join sessions as sessions on host.id = sessions.host_id
left outer join process as process on sessions.id = process.session_id
group by host.id;
Run Code Online (Sandbox Code Playgroud)
这是架构的SQLFiddle.
根据小提琴中的数据,输出应为:
id | session count | process count
----------------------------------
1 | 2 | 3
2 | 1 | 2
3 | 1 | 2
4 | 2 | 3
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
id | session count | process count
----------------------------------
1 | 3 | 3
2 | 2 | 2
3 | 2 | 2
4 | 3 | 3
Run Code Online (Sandbox Code Playgroud)
获得所需输出的正确查询是什么?
小智 6
不同;
select host.id,
count(distinct sessions.id) as "session count",
count(distinct process.id) as "process count"
from host as host
left outer join sessions as sessions on host.id = sessions.host_id
left outer join process as process on sessions.id = process.session_id
group by host.id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |