我对 sql 相当陌生,并且当用户不在表 Y 中时,我尝试从表 X 中获取数据,并且玩家 ID 和世界 ID 的组合并且玩家访问权限为 2。
让我进一步解释一下:
表 X(用户表)
+-----------+----------+------------+
| uid | access | more data |
+-----------+----------+------------+
| 1 | 2 | .... |
| 2 | 1 | .... |
| 3 | 2 | .... |
+-----------+----------+------------+
表 Y(世界)
+-----------+-----------+
| userUuid | worldUuid |
+-----------+-----------+
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
+-----------+-----------+
当我想获取我仍然可以添加到世界 1 的所有用户时,我想从用户 3 那里获取用户信息。
用户 1 已经在世界 1 中,用户 2 没有访问级别 2,用户 3 还没有在世界 1 中,但拥有访问级别 2。
我正在使用 medoo,这是我目前的声明:
$database->select("User", [
"[>]UserInWorld" => ["uid" => "userUid"]
], [
"uid",
"displayname",
"surname",
"email"
], [
"AND" => [
"worldUuid[!]" => $worldUuid,
"access" => 2
]
]);
worldUuid 将是我想让用户添加的世界。
使用 ->debug() 时,查询如下所示:
SELECT "uid","displayname","surname","email"
FROM "User"
LEFT JOIN "UserInWorld" ON "User"."uid" = "UserInWorld"."userUid"
WHERE "worldUuid" != '4dafb8c0-57234ff2-03eb-af7f7a5e'
AND "access" = 2
编辑:我在下面使用 medoo 发布了一个解决方案