sql - оставленный соединение - количество

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

когда я выбираю столбцы из таблицы статей, я также хочу выбрать количество комментариев к статье в том же избранном операторе... (предположите, что общее поле между этими двумя таблицами является articleid),

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

8
задан OMG Ponies 5 March 2010 в 18:15
поделиться

4 ответа

Используйте:

   SELECT a.articleid, 
          COUNT(*) AS num_comments
     FROM ARTICLES a
LEFT JOIN COMMENTS c ON c.articleid = a.articleid
 GROUP BY a.articleid

Какие бы столбцы вы ни выбрали из таблицы ARTICLES , вам нужно будет определить в предложении GROUP BY , потому что для них не выполняется агрегатная функция. на них.

5
ответ дан 5 December 2019 в 08:23
поделиться

Это должно быть более эффективным, поскольку группировка по выполняется только в таблице комментариев. .

SELECT  
       a.ArticleID, 
       a.Article, 
       isnull(c.Cnt, 0) as Cnt 
FROM Article a 
LEFT JOIN 
    (SELECT c.ArticleID, count(1) Cnt
     FROM Comment c
    GROUP BY c.ArticleID) as c
ON c.ArticleID=a.ArticleID 
ORDER BY 1
12
ответ дан 5 December 2019 в 08:23
поделиться

Это должно сработать...

SELECT
   article_column_1, article_column_2, count( ct.articleid) as comments
FROM
   article_table at
   LEFT OUTER JOIN comment_table ct ON at.articleid = ct.articleid
GROUP BY 
   article_column_1, article_column_2
2
ответ дан 5 December 2019 в 08:23
поделиться
SELECT 
       a.Article,
       a.ArticleID,
       t.COUNTOFCOMMENTS
FROM
       Article a
LEFT JOIN
       Comment c
ON c.ArticleID=a.ArticleID
LEFT JOIN
(SELECT ArticleID, COUNT(CommentID) AS COUNTOFCOMMENTS FROM Comments GROUP BY ArticleID) t
ON t.ArticleID = a.ArticleID
1
ответ дан 5 December 2019 в 08:23
поделиться