MYSQL:left加入并求和两个表,其中一个表有两列引用第一个表

时间:2018-01-02 20:14:09

标签: mysql join sum

我正在尝试创建一个程序,其中transfer表连接到我的account表。在我的transfer表中,有两个FK列引用了accountid列。

帐户表:

CREATE TABLE account (
    id              INT         NOT NULL    AUTO_INCREMENT,
    name            VARCHAR(30) NOT NULL,
    number          VARCHAR(30) NOT NULL DEFAULT '',
    description     VARCHAR(255)NOT NULL DEFAULT '',
    is_active       BIT(1)      NOT NULL DEFAULT b'1',
    PRIMARY KEY (id),
    UNIQUE account_name (name, number)
);

转移表:

CREATE TABLE transfer (
    id              INT         NOT NULL    AUTO_INCREMENT,
    date            DATE        NOT NULL,
    from_account    INT             NULL,
    to_account      INT             NULL,
    amount          DECIMAL(12, 2) NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (from_account)
        REFERENCES account(id),
    FOREIGN KEY (to_account)
        REFERENCES account(id)
);

get_account程序:

CREATE PROCEDURE get_account()
    SELECT a.*,
        (SUM(t.amount) - SUM(f.amount)) AS balance
    FROM account a
    LEFT JOIN transfer f
        ON a.id = f.from_account
    LEFT JOIN transfer t
        ON a.id = t.to_account
    GROUP BY a.id;

我尝试从from_accout列的总和中减去to_account列的总和。我只能得到一列的总和,但当我尝试得到它们时,它会返回NULL

这似乎应该很容易,但我无法弄明白。

0 个答案:

没有答案