Mysql 选择包含两个不同表和条件的sql语句

Mysql 选择包含两个不同表和条件的sql语句,mysql,sql,oracle,Mysql,Sql,Oracle,在我的数据库中有两个表,就像 系 //Department D# DNAME --------------- 1 RESEARCH 2 IT 3 SCIENCE 计划 //Project Budget D# --------------- 22500 1 22300 1 50000 2 所以我使用这个语句 SELECT D#,DNAME and sum(budget) as total budget

在我的数据库中有两个表,就像

//Department
D#      DNAME
---------------
1      RESEARCH
2        IT
3       SCIENCE
计划

//Project
Budget      D#
---------------
22500       1
22300       1
50000       2
所以我使用这个语句

SELECT D#,DNAME and sum(budget) as total budget
    FROM DEPARTMENT,PROJECT
GROUP BY D#;
我的输出应该是这样的,如果一个部门没有任何项目预算,则表示显示0

D#      DNAME      total budget
-------------------------------
1       RESEARCH      44800
2          IT         50000
3        SCIENCE        0

您缺少
where
子句:

SELECT d.D#,DNAME and sum(budget) as total budget
FROM DEPARTMENT d, PROJECT p
where d.d# = p.dt#
GROUP BY d.D#;
或包括没有预算的部门:

SELECT d.D#,DNAME and sum(budget) as total budget
FROM DEPARTMENT d
left outer join PROJECT p
on d.d# = p.d#
GROUP BY d.D#;
这可能对你有帮助

   SELECT `D#`,`DNAME`, 
   IFNULL((SELECT sum(`budget`) 
          FROM `project` WHERE `project.`D#` = `Department`.`D#` ),0) AS `total budget` 
   FROM `Department`

如果在此查询上执行
EXPLAIN
,您可能会注意到,它使用索引的效率比使用
groupby

@user3553846:需要更多帮助,或者此答案有用吗?