举个实例比较清楚,三个表,ID唯一,表示某个客户的信息
table1 有字段 id name psw email signtime (客户信息表)table2 有字段 id logintime ( 录登录时间) 每次登录增加1条记录table3 有字段 id tradekind(交易种类) tradetime (交易时间)现在要建1个视图能够同时调用 table1的所有信息,这个ID的总共登录次数,最后一次登录时间,最后一次交易时间
table1 有字段 id name psw email signtime (客户信息表)table2 有字段 id logintime ( 录登录时间) 每次登录增加1条记录table3 有字段 id tradekind(交易种类) tradetime (交易时间)现在要建1个视图能够同时调用 table1的所有信息,这个ID的总共登录次数,最后一次登录时间,最后一次交易时间
select a.*,last_logintime=(select max(logintime) from table2 where a.id=id),last_tradetime=(select max(tradetime) from table3 where a.id=id) from table1 a--方法二:
select a.*,b.last_logintime,c.last_tradetime from table1 a
left join (select id,max(logintime) last_logintime from table2 group by id) b on a.id=b.id
left join (select id,max(tradetime) last_tradetime from table3 group by id) c on a.id=c.id
select a.*,b.last_logintime,c.last_tradetime from table1 a
left join (select id,max(logintime) last_logintime from table2 group by id) b on a.id=b.id
left join (select id,max(tradetime) last_tradetime from table3 group by id) c on a.id=c.id
貌似应该使用right join
而这个结果应该只是交易了的纪录,有登录没交易的情况就没算在内