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
我有以下两个表:
评论
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