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评论的新闻也显示出来 展开
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评论的新闻也显示出来 展开
7个回答
展开全部
因为你不能保证所有类别下面一定有新闻,新闻下面一定有评论,所以必须用左连接才能达到目的:
代码如下:
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
代码如下:
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
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
是不是 一个类别下 对应了 多条 新闻 而多条新闻又对应了对跳评论呢?
如果是你可以这样写
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试下面这个行不行:
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
WHERE [News].[CategoryID] = [Category].[ID] AND [Comment].[NewsID]=[News].[ID]
这儿不要用相等,用表的左联,意思就是左边所有符合条件的标题会查询出,右边表有的就会显示, 具体的语法记不清了,用的较少。
这儿不要用相等,用表的左联,意思就是左边所有符合条件的标题会查询出,右边表有的就会显示, 具体的语法记不清了,用的较少。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询