Mysql 添加子查询时遇到问题

Mysql 添加子查询时遇到问题,mysql,Mysql,这是交易 我有两个表,按阶段编号列出小时费率和单价。在一个表上,它可能有阶段2,3,14和81,在另一个表上,2,14,20,83,我需要将表1 sum()添加到表2 sums中,但是如果你看下面的结果,你会看到,尽管我调用了coalese,它仍然会生成NULL,你无法应用数学。希望你能明白我的意思 SELECT ru.phase_no, ROUND(SUM(ru.units * ru.rate) * 0.75, 2) , (SELECT

这是交易

我有两个表,按阶段编号列出小时费率和单价。在一个表上,它可能有阶段2,3,14和81,在另一个表上,2,14,20,83,我需要将表1 sum()添加到表2 sums中,但是如果你看下面的结果,你会看到,尽管我调用了coalese,它仍然会生成NULL,你无法应用数学。希望你能明白我的意思

SELECT ru.phase_no,
        ROUND(SUM(ru.units * ru.rate) * 0.75, 2) , (SELECT 
                    ROUND(SUM(rh.hours * rhh.rate) * 0.75, 2)
                FROM
                    rates_hourly_required rh
                        JOIN
                    rates_hourly rhh ON rhh.id = rh.rates_hourly_id
                WHERE
                    rh.project_id = ru.project_id and rh.phase_no =ru.phase_no group by rh.phase_no,rh.project_id)
    FROM
        rates_unit_required ru
    WHERE
        ru.project_id = 67320
    group by ru.project_id, ru.phase_no


也许有更好的方法来处理这个查询

使用
左连接
而不是相关子查询

SELECT ru.phase_no, 
    ROUND(SUM(ru.units * ru.rate) * 0.75, 2) AS ru_total,
    IFNULL(rh_total, 0) AS rh_total
FROM rates_unit_required AS ru
LEFT JOIN (
    SELECT rh.phase_no, ROUND(SUM(rh.hours * rhh.rate) * 0.75, 2) AS rh_total
    FROM rates_hourly_required rh
    JOIN rates_hourly rhh ON rhh.id = rh.rates_hourly_id
    WHERE rh.project_id = 67320
    GROUP BY rh.phase_no
) AS rh ON rh.project_id = ru.project_id AND rh.phase_no = ru.phase_no
WHERE ru.project_id = 67320
GROUP BY ru.phase_no

WHERE
子句中选择特定值时,按
project\u id
分组也没有意义。

在何处使用
COALESCE()
?请参阅