数据库的设计是:
会员到Membership_Link(1到很多)。
Membership_Link到Membership_Type(多对1)。
我正在尝试将数据插入到Members中,同时将其链接到Membership_Type中的项目。我希望在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"
仅供参考:我将在PHP中使用它 - MYSQLI语句。
答案 0 :(得分:1)
使用更新代替插入因为您要更新不插入的表格。
{
"main": "node_modules/expo/AppEntry.js",
"private": true,
"dependencies": {
"expo": "^25.0.0",
"react": "16.2.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-25.0.0.tar.gz",
"react-native-svg": "^6.3.1",
"victory-native": "^0.17.2"
}
}
答案 1 :(得分:1)
在阅读完你的问题后,我希望你需要创建一个成员,所以我不知道为什么你需要member_link和member_type
所以,为此你只需要写
INSERT into members values (name, email, passowrd);
但是在阅读了您的查询后,您似乎需要更新具有member_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个查询做这件事,没有办法做到这一点,因为你必须在两个不同的表中插入数据
因此,您可以先在成员表中插入数据并保留其ID 然后使用selet查询找到membership_type_id,然后您可以在membership_link表中插入值