这是我的订阅表
id | active hospitalIdpackageId | packageDuration | expireDate | 1 | 0 | 7 | 2 | 3 | 2021-01-22 | 2
---|---|---|---|---|---|
0 | 7 | 1 | 1 | 2021-03-02 | |
3 | 1 | 8 | 6 | 1 | 2021-03-08 |
你只需要把你现有的查询和连接回你的hospital
表。
我也会使用exists
而不是not in,并且在显示的用例中,我看不到packageHospital
上别名为p的外部连接的需要,您不使用它。
试试这个
select h.id, x.MaxExpiredDate, h.<other desired columns>, sp.packageDuration, sp. packageId
from (
select h.id, Max(sp.expireDate) MaxExpiredDate
from hospital h
left join subscribedPackage sp on sp.hospitalId = h.id
where h.hospital_active != 0
and not exists (select * from subscribedPackage s where s.hospitalId=h.id and s.active = 1 )
group by h.id
)x
join hospital h on h.id=x.id
join subscribedPackage sp on sp.hospitalId = h.id