0

有 3 个表 "user"、"blog" 和 "images" 单个用户可以有多个博客

一个博客可以有多个图像,并且多个图像可以用于多个博客

我需要查询单个博客中的图像总数..

而且我还需要查询每个用户的图像总数..

请指导查询以获取数据..

我创建的数据库是这样的:

创建表 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 博客添加外键 (AuthorId) 参考作者 (Id)

ALTER TABLE BlogImages ADD FOREIGN KEY (BlogId) REFERENCES Blog(Id)

ALTER TABLE BlogImages 添加外键 (ImageId) REFERENCES Image(Id)

在上述关系中,我有一个表 BlogImages 具有 blogId 和 ImageId ,这意味着单个 imageID 可以有多个 blogIds ,因此多个博客使用相同的图像

4

2 回答 2

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
于 2013-07-31T06:47:12.967 回答
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

于 2013-07-31T07:03:25.487 回答