2012-11-12 60 views
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 

+2

你必须要更具体的,可以使用联合或连接 – jcho360

+0

是'USER'您的表中的一个?它是'MySQL'中的保留关键字。 – sp00m

回答

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; 

,因为我不知道这些表中的reoccurances的有可能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