0

将此查询结合在一起的最佳方法是什么:

SELECT apvr.LIMIT, apvr.APPROVER_ID, usr.IS_ACTIVE, usr.USER_FULL_NAME         
FROM APPROVERS apvr, USER usr
WHERE apvr.APPROVER_ID = usr.ID

和这个:

SELECT usr.USER_FULL_NAME, COUNT(*) as numOfApprovals, MAX(APPROVAL_DATE) as lastApprovalDate    
FROM IM_APPROVAL_DETAIL appd, USER usr
WHERE usr.ID = appd.APPROVER_ID
GROUP By usr.USER_FULL_NAME

?

4

1 回答 1

0

如果没有真实数据,可能会有点困难,但我的建议如下:

SELECT apvr.LIMIT, apvr.APPROVER_ID, usr.IS_ACTIVE, usr.USER_FULL_NAME, count(*) as numOfApprovals, max(appd.approval_date) as lastApprovalDate
FROM APPROVERS apvr 
JOIN USER usr ON apvr.APPROVER_ID = usr.ID
JOIN IM_APPROVAL_DETAIL appd ON usr.ID = appd.APPROVER_ID
GROUP By apvr.Approver_ID;

因为我不知道这些表中的重复出现,所以 group by 子句可能存在一些问题。所以替代方法是使用子选择:

SELECT apvr.LIMIT, apvr.APPROVER_ID, usr.IS_ACTIVE, usr.USER_FULL_NAME, appd.numOfApprovals, appd.lastApprovalDate 
FROM APPROVERS apvr 
JOIN USER usr ON apvr.APPROVER_ID = usr.ID
JOIN IM_APPROVAL_DETAIL appd
JOIN (
  SELECT approver_id id, count(*) numOfApprovals, max(approval_date) lastApprovalDate 
  FROM im_approval_detail 
  GROUP by id) appd 
ON appd.id = usr.ID
于 2012-11-12T16:49:07.523 回答