предположите, что у меня есть две таблицы. статьи и комментарии.
когда я выбираю столбцы из таблицы статей, я также хочу выбрать количество комментариев к статье в том же избранном операторе... (предположите, что общее поле между этими двумя таблицами является articleid),
как я делаю это? Я мог сделать его, но я не знаю, был ли мой путь эффективен, таким образом, я хочу изучить правильный путь.
Используйте:
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
, потому что для них не выполняется агрегатная функция. на них.
Это должно быть более эффективным, поскольку группировка по выполняется только в таблице комментариев. .
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
Это должно сработать...
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
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