繁体   English   中英

对 JOIN 表进行计数

[英]Make a COUNT on JOIN tables

我有一个查询,我想对行进行计数。 问题是当我尝试计算完全相同的查询时,它正在打印 9,但是当我运行查询并打印行时,它只有 5(应该是)

这是有效的查询并显示 5 行:

$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"); 

上面的代码像它应该的那样工作,但是当我使用它时:

$count_results_quiz = $pdo->query("SELECT COUNT('
    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")->fetchColumn(); 

它正在打印“9”。 有谁知道为什么?

我通过将表拆分为两个查询/表找到了另一种解决方案。 其中一个显示超过 0 个(至少 1 个)正确答案,另一个显示 0 个正确答案。 这样它也更适合我的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM