【发布时间】:2016-02-17 14:40:15
【问题描述】:
分类表
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 元表猫 c_id(1) 元表有 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 的事务有 2 行 t_id(1,2) 此表主要是支付金额和日期
我想 sum() 每个类别的所有成本(来自元表)和金额(来自交易表)。
表连接
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 |
+------+-----------+--------------+---------------+
这里 SUM(m.costs) 都是针对某个类别的成本,而 SUM(t.amount) 都是针对某个类别支付的
请帮助我或任何更好的表管理想法。
【问题讨论】:
-
而您当前的查询是....?
-
您的问题令人困惑“猫 id 1 的成本是 300,但在这里我得到了 400”猫 id 表示 m.costs 和 t.amount 为 300。为什么说是400?提供的数据不应该是 t.amount 的总和为 100?
-
类别 1 的
SUM(t.amount)不应该是 100 (50+50) 吗?
标签: php mysql sql database pdo