SQl 对具有 2 个连接条件的行进行计数

SQl Count rows with 2 conditions on join

我有以下两个表:

评论

comment_post_ID comment_type
1 course_status
2 course_status

postmeta

meta_key meta_value
lesson_course 1
lesson_course 1
lesson_course 2

结果应如下所示:

Array
(
    [0] => stdClass Object
        (
            [comment_post_ID] => 1
            [lessoncount] => 1
        )

    [1] => stdClass Object
        (
            [comment_post_ID] => 1
            [lessoncount] => 2
        )

这就是我到目前为止的地方

SELECT
c.comment_post_ID,
C.lessoncount

FROM comments c

INNER JOIN (SELECT meta_value, count(meta_value) as lessoncount
FROM  postmeta WHERE meta_key='lesson_course') C 

WHERE c.comment_type = 'course_status'

问题是我在每个结果上得到的课时数仍然相同。我尝试了很多东西,但我没有得到...非常感谢您的帮助!

您没有对计数进行分组,因此您得到的是 postmeta.

中所有 lesson_course 行的总计数

而且两个表之间没有连接条件,所以你得到一个完整的叉积。

您不需要子查询,您可以在主查询中使用普通的连接和分组来完成。

SELECT c.comment_post_id, COUNT(*) AS lessoncount
FROM comments AS c
JOIN postmeta AS m ON c.comment_post_id = m.meta_value
WHERE c.comment_type = 'course_status'
AND m.meta_key = 'lesson_course'
GROUP BY c.comment_post_id