Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySQL中的连接和多对多关系_Php_Mysql_Sql_Database_Many To Many - Fatal编程技术网

Php mySQL中的连接和多对多关系

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。搜索包含数字和线性类别的所有帖子

因此,我有一个数据库,包含使用下表的帖子和类别

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。。。这部分解决了我的问题,但我很高兴有你的帮助。。。也要感谢那些不喜欢我的帖子的人,他们给了我越来越多的前进动力;