хочу получать посты категории, которые имеют более 15 комментариев - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть три таблицы (категории), сообщения, комментарии, и я хочу получить количество сообщений в категории, которые имеют более 15 комментариев

Я пытаюсь этот запрос:

SELECT buckets.`id`,buckets.`name`,COUNT(comment.`post_id`) AS comment_count 
FROM post
LEFT JOIN `comment` ON comment.`post_id` = post.`id`
INNER JOIN `buckets` ON buckets.`id` = post.`bucket`
GROUP BY comment.`post_id` 
HAVING COUNT(buckets.`id`) > 14 ORDER BY buckets.`id`

ожидаемый результат

+----+---------+------------+---------------+
| ID | NAME    | POST_COUNT | COMMENT_COUNT |
+----+---------+------------+---------------+
| 1  | Bucket1 | 3          | 70            |
+----+---------+------------+---------------+
| 2  | Bucket2 | 2          | 80            |
+----+---------+------------+---------------+
| 3  | Bucket3 | 4          | 90            |
+----+---------+------------+---------------+
| 4  | Bucket4 | 0          | 15            |
+----+---------+------------+---------------+

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Я получил запрос не совсем, но хочу, но с помощью group_concat

SELECT A.id, A.name, GROUP_CONCAT (A.comment_count SEPARATOR ',') AS total_post FROM (SELECT buckets.id, buckets.name, COUNT (comment.post_id) КАК comment_count ОТ поста INNER JOIN comment ON comment.post_id = post.id INNER JOIN ВКЛЮЧЕНО в buckets.id = post.bucket GROUP BY14) GROUP BY A.id, A.name

Примечание-> total_post содержит сообщения более 14 комментариев

id ---- имя ----- total_post
1---- H1B ------ 91, 15, 19, 20, 15, 15, 26, 20, 79
3 ---- I-140 - ---- 28
4 ---- I-134 (AP) ----- 40, 28, 62
7 ---- MISC -------- 74, 15

0 голосов
/ 21 декабря 2018

Я хочу получить количество постов в категории, которые содержат более 15 комментариев

Ваш вопрос плохо выражен.Имейте в виду, что в будущем будет проще отвечать на вопросы о таблицах, если таблицы будут четко описаны.

Очевидно, у вас есть комментарии к сообщениям.Давайте возьмем те, у кого больше 15 или больше.(Вы сказали «больше 15», но ваш запрос требует > 14.

select post_id, count(*) as ncomment from comments
group by post_id
having count(*) > 14

Теперь мы можем подсчитать количество постов по категориям и получить общее количество комментариев для каждого

select category, count(P.post_id) as npost, sum(N) as ncomment
from  from buckets as P
join (
    select post_id, count(*) as N
    from comments
    group by post_id
    having count(*) > 14
) as C
on P.post_id = C.post_id
group by category
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...