mysql - MySQL在嵌套的左连接中获取总和
问题描述
我有一个食物列表系统。它有五张桌子。
- 地区
- 横幅
- 美食
- 餐厅
- RESTAURANT_SPONSORED
BANNERS、CUISINE 和 RESTAURANT_SPONSORED 表记录广告收入。
我想生成这个表。
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
此查询将输出,
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
一部分?这需要一个嵌套的左连接。
解决方案
将您的查询修改为:
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
这应该工作
推荐阅读
- php - php创建的图像不显示
- javascript - Chart.js 在 setInterval 之后没有更新( setInterval 没有执行)
- javascript - 带有 mousedown 的鼠标悬停事件
- html - 在 hexo...ejs 文件中,折叠不适用于嵌套列表
- c - %rax 初始化为什么?
- ubuntu - /bin/sh: 0: 无法打开 ROOT=$(dirname $0)/
- yii2 - Yii2微框架如何更改端口
- php - Flutter http.post 发送空正文
- python - 如何在python中的一组字符之后创建一个新行
- java - itext pdf生成在可执行jar文件中不起作用