Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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/1/firebase/6.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,数据库的设计是: 成员到成员链接(1到多个) 会员资格链接到会员资格类型(多对1) 我试图将数据插入到成员中,同时将其链接到成员类型中的项目。我希望在1个SQL命令中实现这一点,而不是将其分解为3个查询 INSERT INTO members SET members.username = "Test" ,members.email = "test@test.com" ,members.password = "Password" LEFT JOIN membership_link

数据库的设计是:

成员到成员链接(1到多个)

会员资格链接到会员资格类型(多对1)

我试图将数据插入到成员中,同时将其链接到成员类型中的项目。我希望在1个SQL命令中实现这一点,而不是将其分解为3个查询

INSERT INTO members
SET members.username = "Test"
    ,members.email = "test@test.com"
    ,members.password = "Password"
LEFT JOIN membership_link ON members.id = membership_link.user_id
RIGHT JOIN membership_type ON membership_link.type_id = membership_type.id
WHERE membership_type.name = "Admin"

使用Update代替Insert,因为您正在更新表而不是插入。

Update members
LEFT JOIN `membership_link` ON members.id=membership_link.user_id
RIGHT JOIN `membership_type` ON membership_link.type_id=membership_type.id
SET members.username = "Test", 
members.email = "test@test.com", 
members.password = "Password"
WHERE membership_type.name = "Admin"

在阅读了你的问题后,我希望你需要创建一个成员,所以我不知道你为什么需要成员链接和成员类型

所以,你只需要写下

 INSERT into members values (name, email, passowrd);
但是在阅读您编写的查询之后,似乎需要更新具有member\u type=admin的成员

因此,为此,您必须执行两个查询

 SELECT members.id from members LEFT JOIN `membership_link` ON members.id=membership_link.user_id RIGHT JOIN `membership_type` ON membership_link.type_id=membership_type.id WHERE membership_type.name = "Admin"
得到结果后,您将获得id。因此,请根据members.id更新您的行

  UPDATE members SET members.username = "Test", members.email = "test@test.com", members.password = "Password" WHERE members.id = {id}
更新的答案

您可以使用3个查询来完成此操作。由于您必须在两个不同的表中插入数据,因此无法完成此操作

因此,您可以首先在members表中插入数据并保留其id
然后使用selet查询查找成员类型id,然后您可以在成员链接表中插入值,SQL
insert
一次只能在一个表中插入,因此您需要3次查询才能执行此操作。我已将insert改为UPDATE。我现在得到SQL语法错误:1064#1064-您的SQL语法有错误;查看与您的mysql服务器版本对应的手册,了解在membership.id=membership.user\u id right JOIN`m'第2行使用的接近'LEFT JOIN
membership\u link
的正确语法,它没有出错,但影响了0行。它也没有将数据插入数据库。如果不使用这些表进行更新,为什么要加入这些表?请提供示例数据和预期输出,然后我可以帮助您更好地选择成员。id。。。这更新了我的第一行,但它没有创建新行,当我运行更新时,它只更新了第一行。因此,您想更新一行中的相同数据,并创建一行。这是正确的,我使用用户权限登录,并在帐户创建时分配用户权限。好的,如果我错了,请纠正我。。。。您需要创建一个成员,并将权限分配给所创建的userYes。成员类型保存权限的类型。