有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)
更改表 BlogImages 添加外键(BlogId)引用博客(Id)
更改表 BlogImages 添加外键(ImageId)引用图像(Id)
在上面的关系中,我有一个具有 blogId 和 ImageId 的表 BlogImages ,这意味着单个 imageID 可以有多个 blogIds ,因此多个博客使用同一图像
最佳答案
回复修改后的问题:
单个博客中的图像数量:
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。
如果您不想对同一张图像进行两次计数,则应在 select
关键字后添加 distinct
。
关于mysql - 针对给定关系的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17963278/