Получить общее количество строк из другой таблицы с соответствующим идентификатором - PullRequest
0 голосов
/ 22 мая 2009

Для моей первой таблицы у меня есть такие вопросы:

qid  | question | date
 1      blah      22-05-2009

и тогда у меня есть комментарии к таблице

cid | qid
 1     1
 2     1 
 3     1

так что тогда в моей таблице вопросов у меня может быть добавленный столбец с total_comments, который будет три

Я пытался использовать этот код

SELECT
questions.qid,
questions.question,
questions.date,
sum(comments.qid) AS total_money
FROM
questions
INNER JOIN comments ON comments.qid = questions.qid
ORDER BY questions.date
LIMIT 1

но он выдает ошибку и захватывает только первую строку, когда есть строка с большей датой? Заранее спасибо

Ответы [ 4 ]

1 голос
/ 22 мая 2009

Попробуйте:

;WITH comment_summary AS (
    SELECT comments.qid
        ,COUNT(*) AS comment_count
    FROM comments
    GROUP BY comments.qid
)
SELECT questions.qid
    ,questions.question
    ,questions.date
    ,ISNULL(comment_summary.comment_count, 0) AS comment_count
FROM questions
LEFT JOIN comment_summary
    ON comment_summary.qid = questions.qid
ORDER BY questions.date

Или, если ваш диалект SQL не поддерживает CTE:

SELECT questions.qid
    ,questions.question
    ,questions.date
    ,ISNULL(comment_summary.comment_count, 0) AS comment_count
FROM questions
LEFT JOIN (
    SELECT comments.qid
        ,COUNT(*) AS comment_count
    FROM comments
    GROUP BY comments.qid
) AS comment_summary
    ON comment_summary.qid = questions.qid
ORDER BY questions.date
0 голосов
/ 22 мая 2009

В заявлении необходимо указать "GROUP BY questions.qid, questions.question, questions.date" перед "ORDER BY".

0 голосов
/ 22 мая 2009

Если я правильно понимаю, я думаю, что вы хотите:

SELECT questions.qid, question, date, SUM(comments.qid) 
FROM Questions 
LEFT OUTER JOIN Comments ON Questions.qid = Comments.qid
GROUP BY Questions.qid, Question, Date
ORDER BY Questions.Date
0 голосов
/ 22 мая 2009
  SELECT COUNT(qid), qid
    FROM comments
    GROUP BY qid

Покажет вам количество комментариев за QID.
Если вы хотите определенное количество qid, оно будет:

SELECT COUNT(qid)
FROM comments
WHERE qid = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...