2017-01-14 1 views
0

JOIN을 사용하여 테이블 "pro_quiz_statistic_ref"와 결합하려는 4 개의 테이블이 있습니다. 모든 테이블은 하나의 테이블을 제외한 모든 테이블에 합류하며 "pro_quiz_stastic"입니다.JOIN에서 행을 어떻게 계산합니까?

표 "pro_quiz_statistic_ref"사용자가 참여한 모든 퀴즈를 들고 있습니다. pro_quiz_statistic에서

각 퀴즈에서과가 속해있는 퀴즈를 식별 할 수있다 statistic_ref_id 물론 10 개 답변 기록이있다. 같은 statistic_ref_id를 사용하여 테이블 "pro_quiz_statistic"에서 "correct_count"열의 개수를 계산하려고합니다.

코드와
$results_quiz = $pdo->query("SELECT 
    sr.statistic_ref_id, 
    sr.quiz_id, 
    sr.user_id, 
    sr.total_time, 
    qm.name AS q_name, 
    qm.category_id, 
    qm.subcategory_id, 
    sc.sub_category_id, 
    sc.sub_category_name AS quiz_type, 
    pl.time, 
    pl.points, 
    qs.correct_count AS count_correct 
    FROM pro_quiz_statistic_ref AS sr 
    JOIN pro_quiz_master qm ON qm.id = sr.quiz_id 
    JOIN pro_quiz_subcategory sc ON sc.sub_category_id = qm.subcategory_id 
    JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$get_id' 
    JOIN pro_quiz_statistic qs ON qs.statistic_ref_id = sr.statistic_ref_id 
    WHERE sr.user_id = '$get_id' ORDER BY qm.name ASC"); 

는 사용자가 "pro_quiz_statistic"에 나열된 * 10 답에 참여한 모든 퀴즈를 출력 위는

내가

처럼 쓰기 위해 노력했다 :

나는이 쿼리를

COUNT(qs.correct_count) AS count_correct 

하지만 한 행만 인쇄됩니다. BTW : user_id로도 필터링됩니다.

이 있기 때문에 내가 가입 사용하려는 이유는 더

사람이 나를 도와 드릴까요?

안부

케네스

-------- 업데이트] 난 그냥 잘 작동되는이 함께 결국

--------- :

$results_quiz = $pdo->query("SELECT 
    sr.statistic_ref_id, 
    sr.quiz_id, 
    sr.user_id, 
    sr.total_time, 
    qm.name AS q_name, 
    qm.category_id, 
    qm.subcategory_id, 
    sc.sub_category_id, 
    sc.sub_category_name AS quiz_type, 
    pl.time, 
    pl.points, 
    COUNT(qs.correct_count) AS count_correct 
    FROM pro_quiz_statistic_ref AS sr 
    JOIN pro_quiz_master qm ON qm.id = sr.quiz_id 
    JOIN pro_quiz_subcategory sc ON sc.sub_category_id = qm.subcategory_id 
    JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$get_id' 
    JOIN pro_quiz_statistic qs ON qs.statistic_ref_id = sr.statistic_ref_id 
    WHERE 
    sr.user_id = '$get_id' AND 
    qs.correct_count = '1' 
    GROUP BY  
    sr.statistic_ref_id, 
    qs.correct_count 
    ORDER BY qm.name ASC"); 

답변

0

당신은 당신이 문에 의해 그룹을 사용해야합니다 수 (..) 같은 집계 함수가 필요한 경우

$results_quiz = $pdo->query("SELECT 
     sr.statistic_ref_id, 
     sr.quiz_id, 
     sr.user_id, 
     sr.total_time, 
     qm.name AS q_name, 
     qm.category_id, 
     qm.subcategory_id, 
     sc.sub_category_id, 
     sc.sub_category_name AS quiz_type, 
     pl.time, 
     pl.points, 
     count(qs.correct_count)AS count_correct 
     FROM pro_quiz_statistic_ref AS sr 
     JOIN pro_quiz_master qm ON qm.id = sr.quiz_id 
     JOIN pro_quiz_subcategory sc ON sc.sub_category_id = qm.subcategory_id 
     JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$get_id' 
     JOIN pro_quiz_statistic qs ON qs.statistic_ref_id = sr.statistic_ref_id 
     WHERE sr.user_id = '$get_id' 
     GROUP BY  
     sr.statistic_ref_id, 
     sr.quiz_id, 
     sr.user_id, 
     sr.total_time, 
     qm.name, 
     qm.category_id, 
     qm.subcategory_id, 
     sc.sub_category_id, 
     sc.sub_category_name AS quiz_type, 
     pl.time, 
     pl.point 
     ORDER BY qm.name ASC"); 
+0

감사합니다. scaisEdge :-) – Kenneth

+0

@Kenneth i. 당신은 단순히 내 대답이 옳다면 받아 들일만한 것으로 표기 해 주시길 바랍니다. (그룹에서 쓸모가없는 칼럼) 잘 보셨나요? 여기를 보시오. http://meta.stackexchange.com/questions/5234/how-does-accepting -an-answer-work – scaisEdge

+0

그게 끝났어. 여기에 관련된 다른 문제를 게시했다. http://stackoverflow.com/questions/41656159/make-a-count-on-join-tables – Kenneth

관련 문제