繁体   English   中英

MySQL多对多查询

[英]MySQL Many-to-Many Query

我目前正在将游戏的多玩家引擎的玩家保存功能转换为SQL数据库,以集成网页以显示/修改/出售角色。 原始系统将所有数据存储到文本文件中,这是处理该数据的一种糟糕方法,因为它仅适用于游戏。 在文本文件中,存储了用户的用户名,密码,ID和播放器数据,仅允许一个字符。 我将其分为表格,可以成功保存和加载字符数据。 我的表很大,因此出于示例目的,我将使用以下表格:

帐户:

+----+----------+----------+
| ID | Username | Password |
+----+----------+----------+
|  1 | Player1  | 123456   | (Secure passwords much?)
|  2 | Player2  | password | (These are actually hashed in the real db)
+----+----------+----------+

account_character:

+------------+--------------+
| Account_ID | Character_ID |
+------------+--------------+
|      1     |       1      |
|      1     |       2      |
|      2     |       3      |
+------------+--------------+

字符:

+----+-----------+-----------+-----------+--------+--------+
| ID | PositionX | PositionY | PositionZ | Gender | Energy | etc....
+----+-----------+-----------+-----------+--------+--------+
|  1 |    100    |    150    |     1     |   1    |   100  |
|  2 |     30    |     90    |     0     |   1    |   100  |
|  3 |    420    |    210    |     2     |   0    |  53.5  |
+----+-----------+-----------+-----------+--------+--------+

这些表使用关系链接。

到目前为止,我所拥有的是,用户登录并且服务器查询其用户名并匹配密码。 如果密码匹配,则服务器将根据登录期间从帐户加载的ID开始加载字符数据。

这就是我卡住的地方。 我已经使用SQL命令界面通过phpmyadmin成功完成了此操作,但是由于凌晨4点左右,我很累,在保存之前不小心关闭了包含命令的选项卡。 我尝试复制此内容,但我无法获取查询中所需的数据。

我最近在大学完成了一门数据库课程,并获得了优异的成绩,但是对于我一生来说,我无法再继续使用它了……我遵循了教程,但是由于情况通常与我不同,因此我无法申请它们了解他们。 我知道一旦有有效的命令,我就会踢自己。

Tl; dr-我希望使用该帐户的“ ID”查询链接到该帐户的所有字符数据。

我认为这应该工作:

SELECT
    *
FROM
    account_character ac
    INNER JOIN account a ON ac.Account_ID = a.ID
    INNER JOIN character c on ac.Character_ID = c.ID
WHERE
    account.Username = ? AND
    account.Password = ?
;

我们通过加入所有相关的表一起启动,然后筛选获得的字符都是只为当前用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM