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进行计数 我有一个疑问: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进行计数 我有一个疑问:
$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有关的另一个问题: