50分,求一个SQL语句。。。。。

有3个表,情况如下Category类别表【ID,Name】News新闻表【ID,CategoryID,Title】Comment评论表【ID,NewsID,Content... 有3个表,情况如下
Category 类别表 【ID,Name】
News 新闻表 【ID,CategoryID,Title】
Comment 评论表 【ID,NewsID,Content】

现在需要查询的是
[Category].[Name] 分类名称,[News].[ID] 新闻ID,[News].[Title] 新闻标题,CommentCount评论总数

我写了一个SQL语句,但是有点问题
SELECT [Category].[Name],[News].[ID],[News].[Title], Count(*)
FROM [News],[Category],[Comment]
WHERE [News].[CategoryID] = [Category].[ID] AND [Comment].[NewsID]=[News].[ID]
GROUP BY [Category].[Name],[News].[ID],[News].[Title],[Comment].[NewsID]
ORDER BY [News].[Time] DESC
这样查询到的结果,只显示有评论的新闻,0评论的新闻不显示
求正确答案
我是希望0评论的新闻也显示出来
展开
 我来答
flyingFish211
2011-03-24 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
因为你不能保证所有类别下面一定有新闻,新闻下面一定有评论,所以必须用左连接才能达到目的:
代码如下:

SELECT Category.Name, News.ID, News.Title, COUNT(Comment.ID)
FROM Category
LEFT JOIN News ON Category.ID = News.CategoryID
LEFT JOIN Comment ON Comment.NewsID = News.ID
GROUP BY c.Name, News.ID, News.Title
蝶儿忙
2011-03-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:2629
采纳率:0%
帮助的人:0
展开全部
SELECT [Category].[Name],[News].[ID],[News].[Title], Count(*)
FROM [News] INNER JOIN [Category] ON [News].[CategoryID] = [Category].[ID]
LEFT JOIN [Comment] ON [Comment].[NewsID]=[News].[ID]
GROUP BY [Category].[Name],[News].[ID],[News].[Title],[Comment].[NewsID]
ORDER BY [News].[Time] DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yufei624166713
2011-03-24 · TA获得超过491个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:443万
展开全部
LZ你这SQL错的很严重啊。。。先确定这三张表的关系
是不是 一个类别下 对应了 多条 新闻 而多条新闻又对应了对跳评论呢?
如果是你可以这样写

SELECT [Category].[Name],[News].[ID],[News].[Title], Count(*)
FROM [News] LEFTJOIN [Category] ON [News].[CategoryID] = [Category].[ID]
LEFT JOIN [Comment] ON [Comment].[NewsID]=[News].[ID]
GROUP BY [Category].[Name],[News].[ID],[News].[Title],[Comment].[NewsID]
ORDER BY [News].[Time] DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjvfhpssmarco
2011-03-24 · TA获得超过334个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:146万
展开全部
SELECT [Category].[Name],[News].[ID],[News].[Title],A.iCount
FROM [News]
inner join [Category] on [News].[CategoryID] = [Category].[ID]
left join (select NewsID, Count(1) iCount from [Comment] group by NewsId) A on A.[NewsID]=[News].[ID]
ORDER BY [News].[Time] DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
michael_mengyu
2011-03-24 · TA获得超过110个赞
知道答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
试试下面这个行不行:
SELECT c.[Name],n.[ID],n.[Title], Count(*)
FROM [News] n inner join [Category] c on n.[CategoryID] = c.[ID] left outer join [Comment] c
on c.].[NewsID]=n.[ID]
GROUP BY c.[Name],n.[ID],n.[Title],c.[NewsID]
ORDER BY n.[Time] DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传奇勇者
2011-03-24 · TA获得超过747个赞
知道大有可为答主
回答量:1706
采纳率:75%
帮助的人:793万
展开全部
WHERE [News].[CategoryID] = [Category].[ID] AND [Comment].[NewsID]=[News].[ID]
这儿不要用相等,用表的左联,意思就是左边所有符合条件的标题会查询出,右边表有的就会显示, 具体的语法记不清了,用的较少。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式