2013-01-05 2 views
0

를 얻을 :내가 쿼리 다음에 대한 잘못된 결과

select sum(j.credits) as credits, count(id.redo) as redos 
from operator o inner join jobdetails j on j.opid=o.id 
       inner join imagedetails id on id.opid=o.id 
       and im.redo=y group by o.id 
+0

그룹을 만들고 있지만 그룹화하려는 필드가 선택문에 없습니다. – Rob

+0

@rob 그것은 mysql입니다. 당신은 이것을 포함하여 당신이 좋아하는 것을 할 수 있고 심지어 집계되지 않은 컬럼을 그룹화하지 않아도 될 수 있습니다 – Bohemian

+0

그게 무슨 뜻입니까? 그룹화 된 항목이 선택 항목에 없으면 집계에 모든 ID가 포함된다고 가정하므로 그룹의 요점은 무엇입니까? 각 ID마다 합계를보고 싶다면이 ID가 선택 항목에 있어야합니다. – Rob

답변

0

당신은 SUM을 분리하고 가능한 빨리 J 3 개 기록과 ID 4 개 기록이있는 경우 다른 테이블에서 COUNT한다 결과 집합에서 JOIN 후에 3 * 4 = 12 레코드를 얻을 수 있으므로 잘못된 합계와 개수가 발생합니다. 예 :

select o.id, j.sum_credits as credits, id.count_redo as redos 
from operator o 
    inner join 
     (select opid, sum(credits) sum_credits from jobdetails group by opid) j 
       on j.opid=o.id 
    inner join 
     (select opid, count(redo) count_redo from imagedetails 
               where redo=y group by opid) id 
       on id.opid=o.id