在mySQL中加入了多对多的关系

时间:2015-05-17 20:46:06

标签: php mysql sql database many-to-many

所以我有一个由帖子和类别组成的数据库,使用下表

  1. 帖子(PostID,PostName,PostCategory)
  2. 类别(CategoryID,CategoryName)
  3. 然后我有另一张表将两者连接起来,如下所示

    1. posts_categories(Posts_Category_ID,PostID,CategoryID)
    2. 我想知道如何为以下命令创建SQL查询:

      一个。创建SQL查询以使用MULTIPLE CATEGORIES填充单个POST 湾搜索包含多个类别

      的所有帖子

      ex。创建名为“Post1”的帖子,其类别为“Digital”,“Analog”,“Linear” 前b。搜索包含分类“数字”和“线性”的所有帖子

      非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我不知道我是否完全得到了您的问题,但下面的查询应该返回多对多表中的那些条目,这些条目对于单个postId具有多个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列,您应该对此表具有唯一约束,或者将其作为主键。

答案 1 :(得分:0)

如果您正在讨论获取数据,请使用链接表在表之间进行连接。像下面的东西

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')