Php mySQL中的连接和多对多关系
因此,我有一个数据库,包含使用下表的帖子和类别 posts PostID、PostName、PostCategory 类别CategoryID,CategoryName 然后我有另一张桌子,它把这两张桌子连接在一起,如下所示 职位\类别职位\类别\ ID、职位ID、类别ID 我想知道如何为以下命令创建SQL查询: a。创建一个SQL查询,用多个类别填充一篇文章 B搜索包含多个类别的所有帖子 前a。创建名为Post1的帖子,其中包含数字、模拟、线性等类别 ex b。搜索包含数字和线性类别的所有帖子Php mySQL中的连接和多对多关系,php,mysql,sql,database,many-to-many,Php,Mysql,Sql,Database,Many To Many,因此,我有一个数据库,包含使用下表的帖子和类别 posts PostID、PostName、PostCategory 类别CategoryID,CategoryName 然后我有另一张桌子,它把这两张桌子连接在一起,如下所示 职位\类别职位\类别\ ID、职位ID、类别ID 我想知道如何为以下命令创建SQL查询: a。创建一个SQL查询,用多个类别填充一篇文章 B搜索包含多个类别的所有帖子 前a。创建名为Post1的帖子,其中包含数字、模拟、线性等类别 ex b。搜索包含数字和线性类别的所有帖子
非常感谢您的帮助。我不知道是否完全理解您的问题,但是下面的查询应该会返回多对多表中的条目,这些条目对于一个帖子有多个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列,您应该在此表上有一个唯一的约束,或者将其作为主键。如果要获取数据,请使用链接表在表之间进行连接。像下面这样
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')
你试过什么?你走了多远?将使用两个单独的INSERT语句向post和post_类别表添加行。如果类别中的相应行尚不存在,则还需要单独插入以将行添加到该表中。对于查询,可以考虑对每个类别使用带有相关子查询的EXISTS谓词,或者使用SELECT COUNTDISTINCT相关子查询,并将返回的计数值与您要查找的类别数进行比较。这个问题以前被问过很多次,我基本上是个新手。我可以创建一个新的帖子,给它一个名字,并在PostCategory字段中手动分配一个号码。我希望有人能帮助我编写查询,将多个类别从一个多选菜单添加到一篇文章中…@Eric如果你是新手,尝试从更简单的内容开始,并以此为基础-尽管表面上看,这实际上是一个相当复杂的SQL查询,如果你只是在学习,花一段时间玩弄这门语言并首先学习它绝对是值得的。如果您不介意使用TSQL而不是MySQL,并且必须在查询中创建表,请看一看-这是一个很好的小沙盒,您可以学习有关SE网络的各种很酷的东西。感谢大家的帮助,尤其是@Rahul。。。这部分解决了我的问题,但我很高兴有你的帮助。。。也要感谢那些不喜欢我的帖子的人,他们给了我越来越多的前进动力;