Mysql 如何计算联接中的行数?

Mysql 如何计算联接中的行数?,mysql,Mysql,我有四个表,我想使用JOIN将它们与表“pro\u quick\u statistic\u ref”结合起来。除了一张桌子外,所有的桌子都连接得很好,这就是“专业测验” “pro_Quike_statistic_ref”表包含用户参与的所有测验 在pro_测验统计中,每个测验有10个答案的记录,当然还有统计参考id来确定它属于哪个测验。 我想在表“pro\u Quike\u statistic”中的“correct\u count”列上使用相同的统计\u ref\u id进行计数 我有一个疑问:

我有四个表,我想使用JOIN将它们与表“pro\u quick\u statistic\u ref”结合起来。除了一张桌子外,所有的桌子都连接得很好,这就是“专业测验”

“pro_Quike_statistic_ref”表包含用户参与的所有测验

在pro_测验统计中,每个测验有10个答案的记录,当然还有统计参考id来确定它属于哪个测验。 我想在表“pro\u Quike\u statistic”中的“correct\u count”列上使用相同的统计\u ref\u 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,
    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");  
上面的代码将打印出用户参与的所有测验*在“专业测验统计”中列出的10个答案

我试着像这样写

COUNT(qs.correct_count) AS count_correct 
但它只打印出一行。 顺便说一句:它还通过用户id进行过滤

我想使用JOIN的原因是因为还有更多

有人能帮我吗

致意

肯尼斯

--------更新---------

我最终得到了一个很好的结果:

$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(..)这样的聚合函数,那么应该使用GROUPBY语句

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

@肯尼斯一世。如果我的答案是正确的,请将其标记为已接受…看看这里是如何做到的。。我在这里发布了与count有关的另一个问题: