사용자 테이블 (사용자)과 튜토리얼 테이블 (텍스트, 비디오 및 기타)이 있습니다.다른 테이블의 집계 된 열을 그룹화하는 방법은 무엇입니까?
각 자습서에는 rating_positive
및 rating_negative
열이 있으며 사용자 (ID)에 연결되어 있습니다.
자습서가 가장 많은 10 명의 사용자를 선택하고 자습서의 긍정적/부정적 등급이 인 것을 선택하고 싶습니다.
다음 쿼리를 시도했지만 작동하지 않습니다. tutorials_count/pos/neg에 너무 많은 결과를 반환합니다. 어떻게 올바르게 할 수 있습니까?
SELECT
u.id AS user_id,
(COUNT(t.id) + COUNT(v.id) + COUNT(o.id)) AS tutorials_count,
(SUM(t.rating_positive) + SUM(v.rating_positive) + SUM(o.rating_positive)) AS pos,
(SUM(t.rating_negative) + SUM(v.rating_negative) + SUM(o.rating_negative)) AS neg
FROM
user u LEFT JOIN trick t ON u.id = t.submitter_id
LEFT JOIN video v ON u.id = v.submitter_id
LEFT JOIN other o ON u.id = o.submitter_id
GROUP BY u.id
ORDER BY tutorials_count DESC
LIMIT 10
: IFNULL이 허용 대안이지만, 이식 너무 가능성이없는 MySQL의 특정있어 -
당신은 일을 수학 0으로 이러한 변환 유착을 사용해야합니다. :-) 빠른 성능으로 더 나은 쿼리가 있습니까? – Smock