我有四个表个人、贷款、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
这样做有时可能检索到无效的结果,因为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