首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套左联接中的MySQL求和

嵌套左联接中的MySQL求和
EN

Stack Overflow用户
提问于 2019-04-04 11:09:02
回答 1查看 43关注 0票数 0

我有食品清单系统。它有五张桌子。

  1. 各地区
  2. 横幅
  3. 菜系
  4. 饭馆
  5. RESTAURANT_SPONSORED

横幅、美食和RESTAURANT_SPONSORED表格记录了广告的收入。

我想要生成这张桌子。

代码语言:javascript
复制
name    | banner_revenue | cuisine_revenue | restaurant_promotions
------------------------------------------------------------------
NY      | 10,000         | 4,800           | 12,000
Paris   | NULL           | 8,000           | 8,000
London  | NULL           | NULL            | 2,000

这个查询将输出,

代码语言:javascript
复制
SELECT r.name,
       sb.fee,
       sc.fee
       FROM REGIONS r
            LEFT JOIN (SELECT sum(b.fee) fee,
            b.region_id
                              FROM BANNERS b
                              GROUP BY b.region_id) sb
                      ON sb.region_id = r.id
            LEFT JOIN (SELECT sum(c.fee) fee,
                              c.region_id
                              FROM CUISINE c
                              GROUP BY c.region_id) sc
                      ON sc.region_id = r.id;



    name    | banner_revenue | cuisine_revenue | 
    --------------------------------------------
    NY      | 10,000         | 4,800           | 
    Paris   | NULL           | 8,000           | 
    London  | NULL           | NULL            |

但是如何获得restaurant_promotions部件呢?它需要一个嵌套的左联接。

DB Fiddle演示

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 11:31:09

将查询修改为:

代码语言:javascript
复制
SELECT r.name,
       sb.fee,
       sc.fee,
       sr.fee
       FROM REGIONS r
            LEFT JOIN (SELECT sum(b.fee) fee,
            b.region_id
                              FROM BANNERS b
                              GROUP BY b.region_id) sb
                      ON sb.region_id = r.id
            LEFT JOIN (SELECT sum(c.fee) fee,
                              c.region_id
                              FROM CUISINE c
                              GROUP BY c.region_id) sc
                      ON sc.region_id = r.id
            LEFT JOIN(SELECT sum(RESTAURANT_SPONSORED.fee) fee,
                      R.region_id
                      FROM RESTAURANTS R
                      LEFT JOIN RESTAURANT_SPONSORED ON(RESTAURANT_SPONSORED.restaurant_id = R.id) 
                      GROUP BY R.region_id) sr
                      ON sr.region_id= r.id

这应该能行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55514447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档