gpt4 book ai didi

MYSQL 创建摘要 View

转载 作者:行者123 更新时间:2023-11-29 02:11:32 26 4
gpt4 key购买 nike

我的情况的简化示例:

我有两个表(一个用于 2017 年,一个用于 2018 年),其中有两列,CategoryCost

这两个表可能共享一些类别,但它们各自也可能有一些独特的类别。

我正在尝试创建一个“主” View ,其中包含两个表之间所有类别的列表。

例如这是我的

Table: 2017_Summary
+------------------+----------+
| Category | Cost |
+------------------+----------+
| Home Improvement | -1000.00 |
| Mortgage | -800.00 |
| Groceries | -500.00 |
| Bills | -400.00 |
| Taxes | -300.00 |
+------------------+----------+

Table: 2018_Summary
+------------------+----------+
| Category | Cost |
+------------------+----------+
| Mortgage | -750.00 |
| Groceries | -550.00 |
| Bills | -400.00 |
| Car Payment | -350.00 |
| Taxes | -300.00 |
+------------------+----------+

这就是我想要的:

View: Summary
+------------------+-----------+-----------+
| Category | 2017_Cost | 2018_Cost |
+------------------+-----------+-----------+
| Home Improvement | -1000.00 | 0.00 |
| Mortgage | -800.00 | -750.00 |
| Groceries | -500.00 | -550.00 |
| Bills | -400.00 | -400.00 |
| Car Payment | 0.00 | -350.00 |
| Taxes | -300.00 | -300.00 |
+------------------+-----------+-----------+

我可以弄清楚如何创建包含两个表之间共有的那些 Categories 的 View ,但我无法弄清楚如何还包含每个表所独有的那些并且为这些值填写 0.00。 (如果更容易的话,我也可以填写 NULL 而不是 0.00。)

这就是我找出包含通用 Categories 的 View 的方式,但这并不是我想要的:

CREATE VIEW SUMMARY (CATEGORY,2017_COST,2018_COST) AS
SELECT A.CATEGORY,A.COST,B.COST FROM 2017_SUMMARY A, 2018_SUMMARY B
WHERE A.CATEGORY = B.CATEGORY;

最后一个问题:如果使用两个以上的表(例如,还与 2016_Summary 表结合使用),此 View 是否会变得相当复杂?

最佳答案

您应该为类别使用一个中间 View (在某些 mysql 版本的 View 中不允许使用 subselect)和一对左连接作为成本

  CREATE VIEW all_category  AS
select category
from 2018_Summary
union
select category
from 2017_Summary
;

CREATE VIEW SUMMARY AS
select a.category, ifnull(b.cost,0) as 2017_cost, ifnull(c.cost, 0)as 2018_cost
from all_category a
left join 2017_Summary b on a.category = b.category
left join 2018_Summary c on a.category = c.category
;

关于MYSQL 创建摘要 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51126243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com