mysql - 针对给定关系的 SQL 查询

标签 mysql sql sqlite

有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/

相关文章:

python - 有一个更好的方法吗?

sqlite - SQLite:如果操作相同,如何将两个触发器组合为一个?

java - 将数据从编辑文本传递到 Java 对象,

mysql - 在一个字符串中连接 2 列,然后为每个连接获取一个计数

mysql - 设置成员(member)搜索说明

sql - 如何以 'readable' 日期时间格式显示以下内容?

mysql - 一张表与两张不同表的关系

mysql - SQL:日期比较仅比较年份

mysql复制仅插入

mysql - 如何只替换mysql中字符串中的几个字符?