有3个表“用户”,“博客”和“图像” 一个用户可以拥有多个博客
单个博客可以有多个图片和签证诗 这是多个图像可以用于多个博客
我需要查询单个博客中的图片总数..
我还需要查询每个用户的总图像数量。
请引导查询以获取数据..
我创建的数据库是这样的:
创建表Author(Id int,Name nvarchar(max));
创建表格Image(Id int,ImagePath nvarchar(max));
创建表Blog(Id int,Name nvarchar(max),AuthorId int);
创建表BlogImages(Id int,BlogId int,ImageId int);
ALTER TABLE Blog ADD FOREIGN KEY(AuthorId)REFERENCES作者(Id)
ALTER TABLE BlogImages ADD FOREIGN KEY(BlogId)REFERENCES博客(Id)
ALTER TABLE BlogImages ADD FOREIGN KEY(ImageId)REFERENCES图片(Id)
在上面的关系中,我有一个表blogImages有blogId和ImageId,这意味着单个imageID可以有多个blogId,所以多个博客使用相同的图像
答案 0 :(得分:0)
要获取每个用户的图片总数,请尝试按照查询
select U.userId,count(*) from
(
select U.userId,I.imageId from user U,blog B, images I
where B.userId==U.userId and B.blogId==I.blogId
)
group by U.userId
对于单个博客中的图像总数,请使用以下
select B.blogId,count(*) from
(
select B.blogId,I.imageId from blog B,images I
where B.blogId==I.blogId
)
group by B.blogId
答案 1 :(得分:0)
回复修改后的问题:
对于单个博客中的图片数量:
select COUNT(Image.Id)
from Image, BlogImages
where Image.Id = BlogImages.ImageId
and BlogImages.BlogId = @BlogId
其中@BlogId
是您要为其计算图片的博客的ID。
用户数量:
select COUNT(Image.Id)
from Image, BlogImages, Blog
where Image.Id = BlogImages.ImageId
and BlogImages.BlogId = Blog.Id
and Blog.AuthorId = @AuthorId
其中@AuthorId
是您要为其计算图像的用户的ID。
如果您不想两次计算相同的图片,则应在distinct
关键字后添加select
。