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#;