Mysql 选择“使用分组依据”并显示包含两个表的总计
有两张桌子的 部门表Mysql 选择“使用分组依据”并显示包含两个表的总计,mysql,sql,oracle,Mysql,Sql,Oracle,有两张桌子的 部门表 //Department D# DNAME ------------------- 1 SALES 2 ACCOUNTING 3 GAMES 5 SPORTS 项目表 //Project P# D# ----------- 1001 1 1002 3 1003 5 1004 5 当输出显示时,它应该类似于: Department Tot
//Department
D# DNAME
-------------------
1 SALES
2 ACCOUNTING
3 GAMES
5 SPORTS
项目表
//Project
P# D#
-----------
1001 1
1002 3
1003 5
1004 5
当输出显示时,它应该类似于:
Department Total Project
---------------------------
1 1
2 0
3 1
5 2
目前我的声明
SELECT D# FROM DEPARTMENT
WHERE (SELECT COUNT(*) FROM PROJECT WHERE DEPARTMENT.D# = PROJECT.D#);
但是,如果该D#中没有任何项目,我应该显示什么0?尝试以下操作:
SELECT D# , CASE WHEN A.COUNT > 0 THEN D# ELSE 0 END AS TOTAL_PROJECT
FROM DEPARTMENT JOIN (SELECT D# , COUNT(*) FROM PROJECT GROUP BY PROJECT.D#) A ON
DEPARTMENT.D# = A.D#;
使用GROUPBY的简单左连接可以实现这样的要求
SELECT
DEPARTMENT.D#,
COUNT(PROJECT.P#) AS TotalProject
FROM DEPARTMENT
LEFT JOIN PROJECT ON DEPARTMENT.D# = PROJECT.D#
GROUP BY DEPARTMENT.D#
检查以下查询:
SELECT
D# as 'Dept_ID',count(P#) as 'Count'
from
department d
left join project p
on d.D#=p.D#
group by d.D#;
作为“Dept\u ID”
是无效的SQL(至少对于Oracle是如此)。标识符必须用双引号括起来,而不是单引号<代码>'Dept\u ID'是字符串文字,'Dept\u ID'
是列name@a_horse_with_no_name“Dept_ID”表示报表中的列名,对于mysql,如果用户希望在oracle或sql中使用,则可以相应地进行更改……到目前为止,我还不确定如何使用右连接左连接。你能给我一个链接来参考它吗?谢谢
SELECT
D# as 'Dept_ID',count(P#) as 'Count'
from
department d
left join project p
on d.D#=p.D#
group by d.D#;