【发布时间】:2018-12-01 15:22:36
【问题描述】:
我正在尝试构建一个查询以获取可用于 MySQL、Oracle 10 和 12 的最新记录。
场景: 我有 4 个表 - 客户、地址、贷款、申请 我想加入这 4 个表以获取应用程序的客户名称和地址。
客户、贷款和申请是一对一的关系 而客户和地址是一对多的关系。
select count(c.name)
from application
left join loan on (loan.id = application.id)
inner join customer on (loan.cust_num = customer.id);
这给出了 100 行;
select count(c.name)
from application
left join loan on (loan.id = application.id)
inner join customer on (loan.cust_num = customer.id)
inner join address a1 on (loan.cust_num = address.cust_num)
inner join (
select max(date) as max_date, cust_num
from address
where address_type = 'studio'
group by cust_num
) a2
on a1.cust_num = a2.cust_num
and a1.date = a2.max_date;
这给出了 200 条记录,因为在某个日期的地址中有超过 1 条记录,其 address_type 是客户的“工作室”。
如何获取最新记录。
最后,我想要应用程序的地址表中的地址列和客户表中的名称。
谢谢。
【问题讨论】: