mysql - 合并多个表生成 View

标签 mysql sql

我有4张表,3张收钱,1张收钱

credittable1

uid | amnt | dat
1   | 50   |31-02-2016
2   | 40   |22-03-2017
...and so on

信用表2

uid | amnt | dat
1   | 60   |01-03-2016
2   | 20   |22-02-2017
...and so on

credittable3

uid | amnt | dat
1   | 70   |03-03-2016
2   | 10   |21-03-2017
...and so on 

可借记

uid | amnt | dat
1   | 120  |12-04-2016
2   | 80   |25-02-2017
...and so on 

我需要将所有 4 个表组合起来,使其看起来像一个包含贷方和借方的账簿,以及每个用户按日期排序的交易余额。例如,我想打印 uid 1 的账本,那么他的所有交易都应该像账本一样按照贷记或借记交易发生的日期以及该笔交易的余额金额打印(就像银行存折一样).

所有表都非常繁重,包含大量记录,因此我正在寻找一种快速(性能良好)的解决方案。

最终实现需要在 Codeigniter 中完成。

用户可能在表 1 中获得 10(或任意数量)笔交易,以此类推在所有表中。每个表中每个用户的记录数可能不同。

输出看起来像这样:

uid | date | credit | debit | balance amount

请提出实现此目标的方法。我无法决定是否应该使用连接或其他策略来完成它。

最佳答案

您可以合并所有这四个表,并否定debittable中的金额:

SELECT uid, amt,      dat FROM credittable1 UNION ALL
SELECT uid, amt,      dat FROM credittable2 UNION ALL
SELECT uid, amt,      dat FROM credittable3 UNION ALL
SELECT uid, -1 * amt, dat FROM debittable

关于mysql - 合并多个表生成 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54269652/

相关文章:

mysql - 独特的左连接给出了倾斜的结果

sql - 使用 MySQL 获取包含值的行

SQL : FULL OUTER JOIN on null columns

sql - ORACLE PL/SQL : Dynamic SQL Select using a Collection

MySQLSyntaxErrorException : Not unique table/alias: 'usuarios_grupos'

mysql - 如何使用具有多个最小和最大条件的 MySQL 获取记录?

Android - JSON mySQL 查询给出 NetworkOnMainThreadException

sql - 这段Sql代码修改哪里出错了?

c# - ASP.Net C# - 在图表中设置和显示 x 轴值

mysql - 获取 3 月份订单的名称、日期和金额