【问题标题】:Mysql SUM query is not showing all other columnMysql SUM 查询未显示所有其他列
【发布时间】:2021-12-27 08:49:35
【问题描述】:

您好,我正在尝试对所选浇头的价格求和并显示所选浇头的所有名称,是否可以这样做?

这里是查询

SELECT tord.Kode_topping_order, 
       t.Nama_topping, 
       SUM(t.Harga_topping) AS 'Total Topping' 
FROM topping_order tord 
JOIN topping t ON tord.Kode_Topping = t.Kode_topping 
WHERE tord.Kode_Produk_Order = 39 

输出:

但是,如果我按 Nama_topping 分组,输出将是这样的:

是否可以让所有的浇头名称和所有的浇头都填充12000?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    使用GROUP BY ... WITH ROLLUP:

    SELECT
        COALESCE(tord.Kode_topping_order, 'TOTAL'),
        COALESCE(t.Nama_topping, 'TOTAL'),
        SUM(t.Harga_topping) AS 'Total Topping'
    FROM topping_order tord
    INNER JOIN topping t
        ON tord.Kode_Topping = t.Kode_topping
    WHERE
        tord.Kode_Produk_Order = 39 AND
        (tord.Kode_topping_order IS NULL OR t.Nama_topping IS NOT NULL)
    GROUP BY
        tord.Kode_topping_order,
        t.Nama_topping
    WITH ROLLUP
    

    【讨论】:

    • 所以它添加了一个 Total 列来总结所有内容,呵呵 ...
    • 所以不可能使 Total_topping 的所有列都是 12000 并且 Nama Topping 是所有的 nama topping,因为我打算将数据存储到 php 中的表中,所以我猜错了多个查询,谢谢你的回答
    • 不确定您还想要什么。如果您想查看包含表总和的新列,请在 select 子句中添加 SUM(SUM(t.Harga_topping)) OVER ()
    • 啊,是这样的
    • 啊是的忘记标记它已回答
    【解决方案2】:

    您可以使用子查询。

    如果您可以提供您已加入的两个表数据,我将输入 当然可以查询是否可以给我两个表数据。

    子查询将是这样的:

    SELECT
    Kode_topping_order,
    (SELECT Nama_topping, SUM(Harga_topping) AS Total_Topping FROM topping) 
    FROM topping_order tord 
    JOIN topping t ON tord.Kode_Topping = t.Kode_topping 
    WHERE tord.Kode_Produk_Order = 39
    

    【讨论】:

    • 上面写着Operand should contain 1 column(s)
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多