mysql - 在 join | 中显示空值销售值(value) - 类别

标签 mysql sql

SELECT
   cat_tbl.id_cat, 
   cat_tbl.name, 
   Sum(expences.price) AS PriceTotal
FROM cat_tbl
  JOIN  expences ON cat_tbl.id_kat= expences.category

GROUP BY
    cat_tbl.id_cat, 
    cat_tbl.name

结果

+------+--------------+--------+
| name | PriceTotal   | id_cat |
+------+--------------+--------+
| Cat1 |      1031.40 |      1 |
| Cat2 |       200.88 |      2 |
| Cat4 |        46.44 |      4 |
| Cat5 |       223.76 |      5 |
+------+--------------+--------+

问题是我有 4 个以上的类别,我尝试了不同的连接,但它们不会显示 PriceTotal 为空值的类别 1-7。

我真的不知道该怎么做

+------+--------------+--------+
| name | PriceTotal   | id_cat |
+------+--------------+--------+
| Cat1 |      1031.40 |      1 |
| Cat2 |       200.88 |      2 |
| Cat3 |         0    |      3 |
| Cat4 |        46.44 |      4 |
| Cat5 |       223.76 |      5 |
| Cat6 |       0      |      6 |
| Cat7 |       0      |      7 |
+------+--------------+--------+

最佳答案

左连接的 2 个选项:

SELECT
   cat_tbl.id_cat, 
   cat_tbl.name, 
   Sum(expences.price) AS PriceTotal
FROM cat_tbl
  LEFT JOIN  expences 
     ON cat_tbl.id_kat= expences.category
GROUP BY
    cat_tbl.id_cat, 
    cat_tbl.name

或:

select cat.id_cat, cat.name,
       coalesce(exp.tot, 0) as PriceTotal
from cat_tbl cat
left join
(
select x.category, sum(x.price) as tot
from expences x
group by x.category
) exp
on cat.id_cat = exp.category

关于mysql - 在 join | 中显示空值销售值(value) - 类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45693841/

相关文章:

mysql - 当值更改时选择 sql 行

mysql - 如何计算表中每一行的行数?

sql - 更新sql表中没有特定值的所有字段

sql - 报表生成器中的可见性表达式

mysql where + group by 很慢

mysql - 为什么 mysql_num_rows 返回零?

php - 组合 SELECT 和 UPDATE 以避免重复选择

php - XAMPP 7.0.6 中的 api-ms-win-crt-runtime-l1-1-0.dll 丢失错误

SQL 对象类型和 Oracle 的 XMLType

MySQL 排除和要求