加入事务表以创建事务语句

时间:2016-01-11 19:34:27

标签: mysql sql sql-server database join

我有一个系统可以向使用MySQL的用户提供贷款,用于本地数据库和实时服务器上的MsSQL,贷款记录一旦获得批准就存储在贷款表中,用户收到贷款,当用户偿还时,贷款存储在支付表中分期贷款记录在存款表中,表格如下所示

贷款:user_id,loan_code,loan_amt

存款:loan_code,deposit_amount,deposit_date

支付:loan_code,dis_amount,dis_date

我有一个挑战是使用MySQL(或MsSQL)作为支付或存款来创建用户最后10个事务的声明,我想创建如下结果

声明:日期,交易类型(存款或支出),贷款代码,金额

1 个答案:

答案 0 :(得分:0)

由于您尝试有效合并两个表中的数据,因此您需要使用UNION运算符。

这适用于MS SQL Server。 MySQL使用LIMIT关键字而不是TOP,但我相信其余的应该是相同的。

SELECT TOP 10
    transaction_date,
    transaction_type,
    loan_code,
    amount
FROM
(
    SELECT
        DEP.deposit_date AS transaction_date,
        'Deposit' AS transaction_type,
        L.loan_code,
        DEP.deposit_amount AS amount
    FROM
        Deposits DEP
    INNER JOIN Loans L ON L.loan_code = DEP.loan_code

    UNION ALL  -- UNION would work also, but UNION ALL will perform slightly better

    SELECT
        DIS.dis_date,
        'Disbursement' AS transaction_type,
        L.loan_code,
        DIS.dis_amount
    FROM
        Disbursements DIS
    INNER JOIN Loans L ON L.loan_code = DIS.loan_code
) SQ
ORDER BY
    transaction_date DESC