2012-01-18 2 views
2
SELECT id,name,SUM(`lsa`) AS lst FROM 
    table_a AS sn, 
    table_b AS fb 
WHERE sn.uid=fb.uid 
    AND COUNT(`lsa`)=6 
GROUP BY sn.uid 
ORDER BY SUM(`lsa`) 

나는 이와 비슷한 쿼리를 가지고 있는데, 분명히 AND COUNT(lsa)=6 비트는 유효한 구문이 아닙니다. 나는 길을 잃었다.GROUP 된 행 수를 계산하시오.

내가 달성하려는 것은 uid 그룹화 lsa의 합에 의해 주문 목록, 인, 경우에만는 "그룹"에 해당 UID, 즉 6 개 개의 항목이있다. 내가 어떻게해야하니?

답변

3

이 집계를 기준으로 필터링 할 유효하지만,하지 WHERE 그래서 대신

SELECT id, 
     name, 
     SUM(`lsa`) AS lst 
FROM table_a AS sn 
     JOIN table_b AS fb 
     ON sn.uid = fb.uid /*Using Explicit Join syntax*/ 
GROUP BY sn.uid,   /*And avoiding MySQL GROUP BY extension*/ 
      id, 
      name 
HAVING COUNT(`lsa`) = 6 
ORDER BY SUM(`lsa`) 

사용하는 HAVING 절에 갈 필요가있다.

+0

'10 분 안에 답변을 수락 할 수 있습니다. ' –

관련 문제