mysql事件,选择insert

rhfm7lfc  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(297)

我对mysql事件有问题。我正在用java和mysql做一个健身房会员管理器。有三个表我需要用于此事件,如下所示:

-------------------------    ---------------------      --------------------------
| Daily Statements      |   | Monthly Statements  |    | Daily Total Statements  |
-------------------------    ---------------------      --------------------------
| ID (PK)               |   | ID (PK)             |    | Ref ID (PK)             |
| Value Paid            |   | Value Paid          |    | Total Daily Value       |
| Date Paid             |   | Date Paid           |    | Date                    |
-------------------------   -----------------------    ---------------------------

所以活动必须把每天的账单汇总起来,并把每天的账单做一个总结或者换言之必须把每天的账单做一个汇总。但我需要它将每日会员和每月会员汇总为一行,并带有当前时间戳。我考虑过使用以下查询:

INSERT INTO `daily_total_statements`(
    `Reference ID`, 
    `Value`, 
    `Date`
) VALUES (
    Null,
    (
        SELECT 
        SUM(`Value Paid`) 
        FROM `daily_statements` 
        WHERE `Date Paid` = CURRENT_DATE()),
    CURRENT_DATE()
)

它适用于一张table,但我不知道如何做两张table。我认为必须用条件句来完成,但我不擅长,因为我是初学者。我应该创建两个不同的事件还是一个触发器?
p、 我想用这个表来创建一个带有jfreegraph的折线图。抱歉,坏郎:)

nbysray5

nbysray51#

使用 UNION 然后将它们的总数与 SUM() .

INSERT INTO daily_total_statements (`Reference ID`, `Value`, `Date`)
SELECT NULL, SUM(combined.total), CURRENT_DATE()
FROM (
    SELECT SUM(`Value Paid`) AS total
    FROM daily_statements
    WHERE `Date Paid` = CURRENT_DATE()
    UNION ALL
    SELECT SUM(`Value Paid`) AS total
    FROM monthly_statements
    WHERE `Date Paid` = CURRENT_DATE()
) AS combined

相关问题