[英]Make a COUNT on JOIN tables
I have a query which I want to COUNT the rows.我有一个查询,我想对行进行计数。 The problem is when I try to count the exact same query it's printing 9 but when I run the query and print the rows it's only 5 (as it should be)
问题是当我尝试计算完全相同的查询时,它正在打印 9,但是当我运行查询并打印行时,它只有 5(应该是)
Here is the query that works and show the 5 rows:这是有效的查询并显示 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");
The above code works like it should but when I use this:上面的代码像它应该的那样工作,但是当我使用它时:
$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();
it's printing "9".它正在打印“9”。 Anyone knows why?
有谁知道为什么?
I found another solution by splitting the tables into two queries/tables.我通过将表拆分为两个查询/表找到了另一种解决方案。 One of them showing more than 0 (at least 1) correct answer and the other one showing 0 correct answers.
其中一个显示超过 0 个(至少 1 个)正确答案,另一个显示 0 个正确答案。 This way it also fits better to my needs.
这样它也更适合我的需求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.