Как мне использовать Count в подзапросе? - PullRequest
0 голосов
/ 09 февраля 2019

У меня проблемы с использованием счетчика в подзапросе.Я хочу написать запрос, который будет возвращать количество комментариев на одного потребителя, но count дает мне общее количество существующих комментариев.

SELECT con.Consumer_ID, con.Scheduled, con.Been_Called, (SELECT COUNT(*) 
FROM Comments WHERE com.ConsumerID = con.Consumer_ID) AS NumComments
FROM Consumers con
INNER JOIN Comments com
ON con.Consumer_ID = com.ConsumerID

Я пытаюсь получить количество комментариев на пользователя, но вместо этого NumComments выдает мне общее количество комментариев в таблице комментариев.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

Похоже, вы слишком усложняете это.Простое агрегированное соединение может помочь, например:

SELECT con.Consumer_ID, con.Scheduled, con.Been_Called, COUNT(*) as NumComments
FROM Consumers con
INNER JOIN Comments com ON com.Consumer_ID = con.ConsumerID
GROUP BY con.Consumer_ID, con.Scheduled, con.Been_Called
0 голосов
/ 09 февраля 2019
SELECT con.Consumer_ID, con.Scheduled, con.Been_Called, COUNT(DISTINCT com.CommentID) AS NumComments
FROM Consumers con
INNER JOIN Comments com
ON con.Consumer_ID = com.ConsumerID
GROUP BY con.Consumer_ID, con.Scheduled, con.Been_Called
0 голосов
/ 09 февраля 2019

Ваше условие where в подзапросе неверно:

SELECT con.Consumer_ID, con.Scheduled, con.Been_Called, 
(
   SELECT COUNT(*) 
   FROM Comments c WHERE c.ConsumerID = con.Consumer_ID
) AS NumComments
FROM Consumers con

Теперь он считает только комментарии с совпадающим идентификатором customer_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...