当前位置: 首页 > 知识库问答 >
问题:

MySQL获取具有相同id的表的总和

商正诚
2023-03-14

我有四个表个人、贷款、ca、付款

我想获得所有付款金额和现金预付款金额的总和,这些金额与从特定日期起与某人加入的贷款具有相同的ID。

这是我的代码,但总和计算不正确:

SELECT pd.*,
    l.total_loan_amount,
    sum(c.ca_total_amount) AS ctot,
    sum(p.payment_amount)
FROM personal_data pd
LEFT JOIN loans l
    ON pd.id_personal_data = l.id_personal_data
LEFT JOIN ca c
    ON l.id_loan = c.id_loan
LEFT JOIN payments p
    ON l.id_loan = p.id_loan
WHERE l.loan_date = curDate()
    AND (
        c.ca_date = curDate()
        OR c.ca_date IS NULL
        )
    AND (
        p.payment_date = curDate()
        OR p.payment_date IS NULL
        )
GROUP BY pd.id_personal_data

共有1个答案

颜博达
2023-03-14

这样做有时可能检索到无效的结果,因为id有时可能出现在另一个表上,也可能不出现。

尝试为要检索的每个列使用子查询。

SELECT  pd.*,
        l.total_loan_amount,
        c.totalCA,
        p.totalPayment
FROM    personal_data pd
        LEFT JOIN loans l
            ON pd.id_personal_data = l.id_personal_data
        LEFT JOIN
        (
            SELECT  id_loan, SUM(ca_total_amount) totalCA
            FROM    ca 
        --  WHERE   DATE(ca_date) = DATE(CURDATE()) OR
        --          ca_date IS NULL
            GROUP BY id_loan
        ) c ON l.id_loan = c.id_loan
        LEFT JOIN
        (
            SELECT  id_loan, SUM(payment_amount) totalPayment
            FROM    payments 
        --  WHERE   DATE(payment_date) = DATE(CURDATE()) OR
        --          payment_date IS NULL
            GROUP BY id_loan
        ) p ON l.id_loan = p.id_loan
WHERE DATE(l.loan_date) = DATE(curDate())

我认为每笔付款和现金预付款的日期都是不相关的,因为您是根据贷款日期来查找总额的

 类似资料:
  • 问题内容: 很抱歉,我只学习了PHP和MySQL,已经搜索了一个多星期,但是没有找到任何答案。 我创建了一个简单的财务脚本,该表如下所示: 我想要这样的结果 有人可以帮助我解决我的问题吗? 谢谢 问题答案: 正如@Quassnoi指出的那样,这对于MySQL来说不是很有效。我尝试使用怪胎连接而不是子查询,因为内部查询本身就可以使用。 编辑 对此引起了一些兴趣,发现连接版本的速度是@Quassnoi

  • 问题内容: 我遇到一个问题,当执行两个表的联接时,无法确定mysql查找具有两个特定“标签”和相同“ hashid”的链接 假设我的表看起来像这样: 链接 标签 我想返回同时具有“有用”和“很棒”标签的行 当前(工作/快速)查询,用于按1个标签查找链接: 阅读文章后,我尝试使用以下内容: 这 不 工作,但它是如此令人难以置信的缓慢,因为无法使用。 有人知道解决方案吗? 问题答案: 问题的类型称为

  • 问题内容: 我有以下查询: 并输出以下内容: 我想要的输出是这样的: 我认为这很有用。但是,这样做: 我有一个像这样的独特行: 我该如何解决? 问题答案: 您需要添加: 在此过程中,您应该学到其他一些知识: 使用显式语法。一个简单的规则:不要在子句中使用逗号。 使用表别名(和)。它们使查询更易于编写和阅读。

  • 问题内容: 我有一个table(),其中2个column(和)是id。这些对应名称的名称在带有列的另一个表()中。 假设我只是在使用,那么简单的内部联接就可以解决我在获取名称时遇到的问题。 如 但是,如果我希望该名称也要解析为什么?“内部连接”会将其解析为? 我知道以上查询是错误的。我可以得到那些对应于两个第和用? -初学者 问题答案: 我建议始终为表和列添加别名。因此,您将确定选择了哪些数据。

  • 问题内容: 我有一个包含人姓,名,部门的SQLite数据库,我需要进行查询以向我显示具有相同名字和姓氏的任何人。我发现以下语句应该可以满足单个字段的要求,但是当我尝试使用它来提取所有具有相同姓氏的记录时,它似乎对我不起作用。我怎样才能做到这一点? 问题答案: 尝试: GROUP BY合并名称值相同的行。 HAVING删除不符合条件的组。 上面的查询将列出名字和姓氏,以及实际上有重复的所有名字/姓氏

  • 在我的身体里我有3