mysql 分组和加入

Posted

技术标签:

【中文标题】mysql 分组和加入【英文标题】:mysql groupby and join 【发布时间】:2021-12-31 22:19:41 【问题描述】:

我想按菜单类型(如“食物”和“饮料”)从 bar_purchase_request 表组中获取总数。我尝试过以下查询:

SELECT  DISTINCT(b.name),
        0 as food_total,
        0 as drink_total,
        sum(ph.total) as total,
        sum(ph.gratuity) as gratuity
    from  branches b
    LEFT JOIN  drink_requests dr  ON b.id = dr.branch_id
    JOIN  drink_food df  ON df.id = dr.drink_id
    JOIN  bar_purchase_history ph  ON ph.request_id = dr.id
    GROUP BY  dr.branch_id;

你可以检查我的表结构如下:

请求表结构:

菜单项表结构:

我想要这样的结果:

任何人都可以帮忙。

【问题讨论】:

这是一个弃用警告而不是错误,因此它不会影响您的应用,但建议不要使用已弃用的函数\模块。你能描述一下你想要达到的目标吗? 请使用SHOW CREATE TABLE 而不是图片。 能否提供表迁移和数据播种器 【参考方案1】:

我创建了查询并为我工作:

SELECT b.name as branch_name,SUM(CASE WHEN df.type = 'drink' THEN bph.price ELSE 0 END) as  totalDrink,SUM(CASE WHEN df.type = 'food' THEN bph.total ELSE 0 END) as totalFood,SUM(bph.gratuity) as gratuity, sum(bph.total) as total FROM bar_purchase_history bph JOIN drink_food df ON bph.item_id = df.id JOIN drink_requests dr ON bph.request_id = dr.id JOIN branches b ON dr.branch_id = b.id where dr.branch_id = 1 GROUP BY dr.branch_id;

【讨论】:

以上是关于mysql 分组和加入的主要内容,如果未能解决你的问题,请参考以下文章

慢查询分组,加入MYSQL laravel

MySQL加入分组没有完美加入

MySQL 查询慢,按限制按顺序分组

在mysql中按2字段分组[重复]

试图从 2 个正在加入的子查询中获取一列并且分组不起作用

CakePHP 2.1 中的 Facebook 点赞对话列表(与分组最大值、子查询、加入相关)