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 に答える