类别表
mysql> SELECT * FROM cats;
+------+-----------+
| c_id | c_name |
+------+-----------+
| 1 | cats 1 |
| 2 | cats 2 |
| 3 | cats 3 |
+------+-----------+
元表
mysql> SELECT * FROM meta;
+------+------+----------+-------------+-------+
| m_id | c_id | name | description | costs |
+------+------+----------+-------------+-------+
| 1 | 1 | Abhijit1 | description | 100 |
| 2 | 1 | Abhijit2 | description | 200 |
| 3 | 2 | Abhijit3 | description | 500 |
| 4 | 3 | Abhijit4 | description | 800 |
+------+------+----------+-------------+-------+
meta和cats表公共是c_id meta表cats c_id(1)meta表有2(Abhijit1,Abhijit2)行和m_id(1,2)
事务表
mysql> SELECT * FROM transactions;
+------+------+------------+--------+
| t_id | m_id | date | amount |
+------+------+------------+--------+
| 1 | 1 | 2016-02-01 | 50 |
| 2 | 1 | 2016-02-06 | 50 |
| 3 | 3 | 2016-02-15 | 400 |
| 4 | 4 | 2016-02-19 | 150 |
+------+------+------------+--------+
交易和元表通用的是m_id交易m_id 1有两行t_id(1,2)。此表主要用于支付金额和日期
我想为每个类别求和()所有成本(从元表)和金额(从事件表)。
表与
cats.c_id
|
|-----> meta.c_id
|-----> meta.m_id
|-----> transactions.m_id
这是错的。猫的成本ID 1是300,但这里我有400
I Want Get Return From Query Like This:
+------+-----------+--------------+---------------+
| c_id | c_name | SUM(m.costs) | SUM(t.amount) |
+------+-----------+--------------+---------------+
| 1 | cats 1 | 300 | 100 |
| 2 | cats 2 | 500 | 400 |
| 3 | cats 3 | 800 | 150 |
+------+-----------+--------------+---------------+
这里的总和(m.成本)是一个类别的所有成本,总和(t.金额)是一个类别的所有支付
请帮助我或任何更好的想法表管理。
试试这个
SELECT cats.c_id,
cats.c_name,
(SELECT SUM(m.cost) FROM meta WHERE cats.c_id = m.c_id) AS cost,
(SELECT SUM(t.cost) FROM meta WHERE t.id = m.id) AS amount
WHERE c.c_id = 1
问题产生于这样一个事实:您加入事务
,以获得总和(t.amount)
。因此,成本
值在单个元
记录与两个交易
记录关联的情况下被计算两次。
您可以使用相关子查询来计算SUM(t.amount)
来解决这个问题:
SELECT c.c_id,
c.c_name,
SUM(m.costs),
(SELECT SUM(t.amount)
FROM transactions AS t
WHERE m.m_id = t.m_id)
FROM cats AS c
LEFT JOIN meta AS m ON c.c_id = m.c_id
GROUP BY c.c_id, c.c_name
输出:
c_id c_name SUM(m.costs) SUM(t.amount)
-----------------------------------------
1 cats 1 300 100
2 cats 2 500 400
3 cats 3 800 150
这里演示
在一次采访中,有人问我是否知道x64指令的行为因所使用的CPU而异,我无法在任何地方找到任何文档,有谁知道这些指令是什么以及为什么会这样?
问题内容: 我有一个可能具有或不具有相同属性值的对象的列表/集合。获得具有相同属性的对象的不同列表的最简单方法是什么?一种收集类型最适合此目的吗?例如,在C#中,我可以使用LINQ执行以下操作。 我最初的想法是使用lambdaj(链接文本),但似乎不支持此功能。 问题答案: 使用接口的实现(类T可能需要自定义方法,您可能必须自己实现)。通常,a 是开箱即用的:它使用和方法比较对象。对于简单的对象,
问题内容: 我有一个包含不同部分的网页,需要将不同的CSS样式表应用于每个部分。我想知道的是如何指定要用于网页每个不同部分的CSS样式表。如果我将它们放在一起,则组件将无法正确显示。 问题答案: 您不能将不同的样式表应用于页面的不同部分。您有几种选择: 最好是使用类名称将页面的不同部分包装在div中: 然后在您的part1 CSS中,为每个CSS规则添加“ .part1”前缀,在您的part2 C
我们在一个基于Swing/Spring的大型应用程序中看到以下异常。该错误发生在用户交互过程中,触发Spring通过commons logging报告警告,后者反过来调用log4j。不幸的是,我无法将这个问题分解为一个独立的示例。 Windows XP SP3、log4j-1.2.17、commons-logging-1.1.1、spring-4.1.2上的Java 8u40 未使用OSGI、we
问题内容: 假设我是普通用户还是超级用户,我想显示不同的列。 覆盖在已经完全没有效果 并且定义条件类属性也不起作用(未定义)(根据上的错误)。在等效的中做同样的事情,仍然没有定义 仅供参考,可以是从前面提到的问题继承的任何类。 问题答案: 我通常定义视图类属性,例如属性。它允许你向其中添加一些动态逻辑: 使用这种方法的问题(以及为什么在函数中重新分配值不起作用)是许多视图属性在应用程序启动时被缓存
假设我有一个,我想把它写到多个BigQuery表中,为每个选择一个可能不同的表。 如何使用Apache BeamAPI来完成此操作?