mySQL 中的联接和多对多关系
Joins and Many to Many Relationship in mySQL
所以我有一个由帖子和类别组成的数据库,使用以下 tables
- 帖子(PostID,Post名称,Post类别)
- 类别(类别 ID、类别名称)
然后我有另一个 table 可以将两者连接在一起,如下所示
- posts_categories (Posts_Category_ID, PostID, CategoryID)
我想知道如何为以下命令创建 SQL 查询:
一个。创建一个 SQL 查询以使用多个类别填充单个 POST
b.搜索包含多个类别的所有 POSTS
例如创建 Post 命名为 "Post1",类别为 "Digital"、"Analog"、"Linear"
前湾搜索所有包含类别 "Digital" 和 "Linear"
的 Post
非常感谢您的帮助。
我不知道我是否完全理解你的问题,但下面的查询应该 return 多对多 table 中的那些条目有多个 categoryId 一个帖子编号。让我知道这是否有帮助:
select *
from posts_categories pc
join (
select postId
from posts_categories
group by postId
having count(categoryId) >1
) x on x.postId = pc.postId
此外,对于 postId 和 categoryId 列,您应该对此 table 设置唯一约束,或者将其设为主键。
如果您正在谈论获取数据,那么使用链接 table 在 table 之间进行连接。如下所示
select p.PostName, c.CategoryName
from posts p inner join post_categories pc on p.PostID = pc.PostID
inner join categories c on c.CategoryID = pc.CategoryID
where c.CategoryName in ('Digitl','Linear')
所以我有一个由帖子和类别组成的数据库,使用以下 tables
- 帖子(PostID,Post名称,Post类别)
- 类别(类别 ID、类别名称)
然后我有另一个 table 可以将两者连接在一起,如下所示
- posts_categories (Posts_Category_ID, PostID, CategoryID)
我想知道如何为以下命令创建 SQL 查询:
一个。创建一个 SQL 查询以使用多个类别填充单个 POST b.搜索包含多个类别的所有 POSTS
例如创建 Post 命名为 "Post1",类别为 "Digital"、"Analog"、"Linear" 前湾搜索所有包含类别 "Digital" 和 "Linear"
的 Post非常感谢您的帮助。
我不知道我是否完全理解你的问题,但下面的查询应该 return 多对多 table 中的那些条目有多个 categoryId 一个帖子编号。让我知道这是否有帮助:
select *
from posts_categories pc
join (
select postId
from posts_categories
group by postId
having count(categoryId) >1
) x on x.postId = pc.postId
此外,对于 postId 和 categoryId 列,您应该对此 table 设置唯一约束,或者将其设为主键。
如果您正在谈论获取数据,那么使用链接 table 在 table 之间进行连接。如下所示
select p.PostName, c.CategoryName
from posts p inner join post_categories pc on p.PostID = pc.PostID
inner join categories c on c.CategoryID = pc.CategoryID
where c.CategoryName in ('Digitl','Linear')