我对SQL的查询语言比较新鲜,我需要提醒一下我做错了什么。我事先意识到我的数据库结构并不是最优的,因此非常感谢您在阅读我的问题时可能会想到的任何提示。
以下是我要做的事情:
我有四个不同的表,所有四个表都包含以前交易的记录信息。这些表有三个相关列,金额,日期和用户ID。我想从所有四列中选择Amount和Date,以便输出为四行,每行包含其中一个表的金额和日期。以下是如何(日期保存为长值):
表1
Row Amount Date UserID
1 1000 0 1
2 2000 2674800000 1
3 3000 5094000000 1
表2
Row Amount Date UserID
1 1000 0 1
2 2000 2674800000 1
3 3000 5094000000 1
我想要的输出
Row Amount Date UserID
1 1000 0 1
2 1000 0 1
3 2000 2674800000 1
4 2000 2674800000 1
5 3000 5094000000 1
6 3000 5094000000 1
以上是我希望新视图中的数据看起来如何,但我得到的是每个数量的三个条目(因此,1000个,2000和3000个三个条目)...如果我将另一个表添加到混合,它似乎成倍增长。
这是我当前的SQL查询:
SELECT T.Amount, T.Date FROM (SELECT Amount, Date, UserID FROM LoanRecords) AS T JOIN (SELECT Amount, Date, UserID FROM ExpenseRecords) AS E ON T.UserID = E.UserID
另外,如果有人可以给我一些关于如何让它显示每个日期的SUM()总数的指示,那就太棒了。
答案 0 :(得分:2)
您可以使用union all
:
SELECT T.Amount, T.Date, T.UserID
FROM ((SELECT Amount, Date, UserID FROM LoanRecords
) UNION ALL
(SELECT Amount, Date, UserID FROM ExpenseRecords
)
) t;
实际上,子查询并不需要:
SELECT Amount, Date, UserID FROM LoanRecords
UNION ALL
SELECT Amount, Date, UserID FROM ExpenseRecords
ORDER BY UserID, Date;
我添加了ORDER BY
,因为这似乎是查询意图的一部分。
您可以在任一查询中使用UNION ALL
添加其他表格。