Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
如何在MYSQL数据库中插入和选择多对多表中的数据_Mysql_Sql - Fatal编程技术网

如何在MYSQL数据库中插入和选择多对多表中的数据

如何在MYSQL数据库中插入和选择多对多表中的数据,mysql,sql,Mysql,Sql,表关系 大家好,我需要关于如何在MYSQL中从简单的多对多关系表中输入和提取数据的帮助,因为我完全迷路了,即将使用一个设置的数据类型,但我知道多对多是正确的方法。我已经包括了一张桌子布局的图片,以帮助您更好地理解。我有三张桌子,衬衫,衬衫,颜色。衬衫表有两列shirt_id,shirt,Shirt2颜色映射表有两列shirt_id,color_id,颜色表有两列color_id,color 我已经创建了表和关系,但是如何在不手动映射的情况下输入和提取数据?是否有一个INSERT语句,我可以在一个

表关系

大家好,我需要关于如何在MYSQL中从简单的多对多关系表中输入和提取数据的帮助,因为我完全迷路了,即将使用一个设置的数据类型,但我知道多对多是正确的方法。我已经包括了一张桌子布局的图片,以帮助您更好地理解。我有三张桌子,衬衫,衬衫,颜色。衬衫表有两列shirt_id,shirt,Shirt2颜色映射表有两列shirt_id,color_id,颜色表有两列color_id,color

我已经创建了表和关系,但是如何在不手动映射的情况下输入和提取数据?是否有一个INSERT语句,我可以在一个语句中添加t恤衫并告诉数据库它的可用颜色,它会将“t恤衫”和“红、绿、蓝”添加到数据库中,并自动填充映射表?使用照片中的示例作为指导:p.s.我想这就是示例关系数据存储在映射表中的方式,如果不是,请告诉我

插入红色、绿色和蓝色t恤的SQL语句是什么? 选择并列出所有可用的红色衬衫的SQL语句是什么? 如何处理衬衫条目上的重复颜色?例如,如果我添加了另一件红色衬衫,我不想再添加颜色为4的红色,我想使用颜色为1。 我知道这些可能都是新手的问题,但在过去的几周里,我在网上找不到这些问题的答案。谢谢你们的帮助。

1

您不能-您需要为每个表编写单独的insert语句

二,

三,


可以向颜色表的“颜色”列添加唯一约束,这将防止创建重复条目。当您想插入一个新项目时,您应该首先检查颜色是否已经存在于表中,如果已经存在,则在shirt2color表中使用它。

您使用的是什么语言?我看到一个集合数据类型,你在使用JPA吗?或者您只是想通过本机SQL实现这一点?最终,我将在我的站点上使用PHP,但我想看看是否有一个直接的SQL语句,比如从内部联接表请求数据时的SQL语句。对于1,我是否可以将INSERT放入BEGIN,COMMIT,以便它一次完成所有操作?对于3,我是否需要用PHP编写一个检查例程,因为SQL中没有内置的机制来实现这一点?是的,您可以在一个事务中完成这一切-如果这是您的意思,那么就不需要一条语句-请参见此答案
SELECT shirt.shirt_id, shirt.shirt FROM shirt
INNER JOIN shirt2color ON shirt.shirt_id = shirt2color.shirt_id
INNER JOIN color ON shirt2color.color_id = color.color_id AND color.color = 'Red'