mysql - mysql内部连接3个表从最大日期获取最后一条记录
问题描述
我有 3 个我想加入的表,但是除了对某些列求和之外,我还需要显示数据库中的每个 user_id 和用户名,但还需要通过一些添加和基于日期的查询来加入他们相应的帐户表。这是我想说的一个例子。
表用户
user_id || user_name || user_dob
301 || john doe || 1955-01-01
312 || Bill Gates || 1976-01-01
表帐户
id || child_id || inv_date || inv_total || inv_funding
38 || 301 || 2018-05-03 12:56:38 || 486.5 || 45.55
39 || 301 || 2018-08-03 14:56:38 || 222.5 || 118.5
40 || 312 || 2018-04-03 11:56:38 || 26.23 || 318.5
41 || 312 || 2018-05-03 12:56:38 || 223.22 || 238.5
42 || 312 || 2018-06-03 13:56:38 || 486.5 || 258.5
表accounts_balance
id || child_id || balance
1 || 301 || 302.00
2 || 312 || 43.33
对于按 user_name 排序的 Table Users 中的每个用户,生成的表需要看起来像这样
User Name || Last Invoiced Date || Last Funding Amount || Last Invoice Amount || Total Funding To Date || Total Invoiced To Date || Balance
john doe || 2018-08-03 14:56:38|| 118.5 || 222.5 || 164.05 || 712.00 || 302.00
这是我的一些代码,因为 c# 格式显然不能正常工作。
invoiceTable.Query = "select " +
"(" +
"max(users.user_id), " +
"users.user_name, " +
"max(accounts.inv_date), " +
"max(accounts.inv_funding) as Last_funding, " +
"max(accounts.inv_total) as Last_Invoice, " +
"sum(accounts.inv_funding) as Total_Funding, " +
"sum(accounts.inv_total) as Total_Invoiced from users " +
")" +
"left join accounts on accounts.child_id = users.user_id group by users.user_name";
解决方案
你可以尝试使用sub-query
select t1.*,t2.inv_funding as Last_funding,t2.inv_total as
Last_Invoice,ab.balance from
(
select users.user_id,
users.user_name,
max(accounts.inv_date) as inv_date,
sum(inv_funding) as Total_Funding,
sum(inv_total) as Total_Invoiced
from users
left join accounts on accounts.child_id = users.user_id
group by users.user_name,users.user_id
) as t1
left join accounts t2 on t1.inv_date=t2.inv_date
left join accounts_balance ab on t1.user_id =ab.user_id
推荐阅读
- python - 基于模型在Django中手动制作自定义表单
- c# - 资源文件正在返回文件路径而不是文件内容
- python - 解析 psutil.virtual_memory() 的输出
- triggers - FATAL_ERROR|System.LimitException:SOQL 查询过多:201
- google-api - Google Drive API 服务帐户 - 域内文件共享
- android - 奇怪的行为 - 如果存在根布局,Recyclerview onItemClick 无法正常工作
- datetime - 如何在 angular-bootstrap-datetimepicker 中更改日期时间格式
- javascript - Import image from './image.jpeg' results Failed to load module script 服务器以“image/jpegerror”的非 JavaScript MIME 类型响应
- c++ - C ++中标识符名称后跟()后的&是什么意思?
- reactjs - Meteor.logout() 导致 React 中的内存泄漏