好的,这是我的 SQL,我使用的是 MySQL:
SELECT
assets.id,
IF(max(asset_checkins.time) IS NULL AND max(asset_checkouts.time) IS NOT NULL, 'checked-out',
IF(max(asset_checkouts.time) > max(asset_checkins.time), 'checked-out',
'checked-in')
) 'status',
asset_checkouts.user, asset_checkouts.location
FROM
assets
left outer join asset_checkouts on asset_checkouts.asset = assets.id
left outer join asset_checkins on asset_checkins.asset = assets.id
group by assets.id;
问题是用户和位置列不是来自与该资产的 max(psdl_asset_checkouts.time) 对应的行。
相反,我得到:
id status user location
15 checked-out 1 4<-this
16 checked-out 1 4
当我想得到:
id status user location
15 checked-out 1 7<-this
16 checked-out 1 4
这是asset_checkouts表,我想要的值是“7”;与资产 15的 max(time) 对应的值。
id user asset time location
3 1 15 7/30/12 12:29 4
14 1 15 7/31/12 11:01 7
我的想法是我需要做一个子选择,但我不确定最好的方法。