SQL加入三个表
发布时间:2020-12-12 16:15:39 所属栏目:MsSql教程 来源:网络整理
导读:我一点一点地学习高级SQL查询,并且我遇到了一个问题: 我有三张表:新闻,作者和图片.新闻表(newsID)中的每个字段是一个新闻故事,然后在作者表(authorID)中具有相关联的作者,并且可以在图像表中具有任意数量的图像.每个图像都有和关联(newsID).所以每个故事都
我一点一点地学习高级SQL查询,并且我遇到了一个问题:
我有三张表:新闻,作者和图片.新闻表(newsID)中的每个字段是一个新闻故事,然后在作者表(authorID)中具有相关联的作者,并且可以在图像表中具有任意数量的图像.每个图像都有和关联(newsID).所以每个故事都有一个作者,但可以有几个图像. 我想列出所有的新闻故事,并只使用其中一个图像作为缩略图.问题是,任何sql查询我尝试列出新闻项目,给我的结果等于图像表中的图像数量,而不是新闻项目的数量. 我不知道从哪里走.任何帮助将不胜感激. 解决方法如果有3张表是[新闻],[作者]和[图像]与适当的列,那么派生表法 您可以有一个派生的图像表,以便每个消息获取一个图像,然后将其与新闻和作者表一起显示,如图所示. SELECT N.[newsStoryTitle],A.authorName,I.imageData1 FROM [news] N LEFT OUTER JOIN author A ON A.newsID = N.newsID LEFT OUTER JOIN ( SELECT newsID,MAX(imageData) AS imageData1 FROM [image] GROUP BY newsID ) AS I ON I.newsID = N.newsID ORDER BY N.newsID 如果不需要任何图像的消息,您可以用INNER JOIN替换LEFT OUTER JOIN. 相关子查询方法(由Marcelo Cantos建议) 如果imageData存储为文本或图像,则派生表中的MAX将无法正常工作.在这种情况下,您可以使用如下相关的子查询: SELECT N.newsStoryTitle,I.imageData FROM dbo.news N INNER JOIN dbo.author A ON N.newsID = A.newsID INNER JOIN dbo.image I ON N.newsID = I.newsID WHERE imageID = ( SELECT MAX(imageID) FROM dbo.image WHERE newsID = N.newsID ) ORDER BY n.newsID (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |