2013-10-02 4 views
0

일치하는 3 개의 항목 그룹을 선택하고 두 번째 테이블에 존재하지 않는 다음 쿼리가 있습니다.3의 그룹 수를 계산 하시겠습니까? 가능한?

'count_result'를 통해 발견 된 그룹 수를 계산할 수있는 방법을 찾고 싶습니다. 아래에 나와있는 개별 항목 ID가 아닙니다.

어떻게하면됩니까?

SELECT COUNT(sub.entry_id) as count_result 
FROM exp_submissions AS sub 
LEFT JOIN exp_judging_portfolios AS jud1 ON sub.entry_id = jud1.entry_id_1 
LEFT JOIN exp_judging_portfolios AS jud2 ON sub.entry_id = jud1.entry_id_2 
LEFT JOIN exp_judging_portfolios AS jud3 ON sub.entry_id = jud1.entry_id_3 
WHERE jud1.entry_id_1 IS NULL 
AND jud2.entry_id_2 IS NULL 
AND jud3.entry_id_3 IS NULL 
AND sub.member_group = 6 
AND sub.type_id = 1 
GROUP BY sub.member_id, sub.portfolio_number 
HAVING count(sub.portfolio_number) = 3 
+0

예제 데이터와 예상 출력을 표시 할 수 있습니까? –

+0

'존재하지 않는 곳 (존재하지 않음)과 존재하지 않는 곳 (존재하지 않음)은 어떻습니까? – wildplasser

답변

1

없음 하위 쿼리 필요합니다.

SELECT COUNT(DISTINCT(sub.member_id, sub.portfolio_number)) as count_result 
FROM exp_submissions AS sub 
LEFT JOIN exp_judging_portfolios AS jud1 ON sub.entry_id = jud1.entry_id_1 
LEFT JOIN exp_judging_portfolios AS jud2 ON sub.entry_id = jud1.entry_id_2 
LEFT JOIN exp_judging_portfolios AS jud3 ON sub.entry_id = jud1.entry_id_3 
WHERE jud1.entry_id_1 IS NULL 
AND jud2.entry_id_2 IS NULL 
AND jud3.entry_id_3 IS NULL 
AND sub.member_group = 6 
AND sub.type_id = 1 
GROUP BY sub.member_id, sub.portfolio_number 
HAVING count(sub.portfolio_number) = 3 
+0

감사합니다. 오류가 발생합니다. 피연산자에 1 열이 포함되어야합니다. – ccdavies

+2

대신'COUNT (DISTINCT CONCAT (sub.member_id, '-', sub.portfolio_number))'를 사용해보십시오. –

+0

완벽. 유일한 문제는 아무 결과도 반환하지 않는 경우입니다. 0 대신에 아무 것도 반환하지 않습니다. 어떻게 0을 반환 할 수 있습니까? – ccdavies

0

는 결과를 계산 다른 쿼리의 원본으로 쿼리를 사용

SELECT COUNT(*) FROM (
     -- YOUR QUERY GOES HERE -- 
) AS t 
관련 문제