Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Php 使用外键从第二个表中获取值_Php_Mysql - Fatal编程技术网

Php 使用外键从第二个表中获取值

Php 使用外键从第二个表中获取值,php,mysql,Php,Mysql,我正在创建一个fantasy football android应用程序,通过php文件和SQL获取JSON数据。我的问题涉及两个表: 玩家详细信息 玩家id(主键) 名字 姓 用户团队 (除PK外的所有id字段都是链接到玩家id的外键) 用户\团队\ id(主键) 守门员 右后卫 左后卫 等等 我希望能够运行一个PHP脚本,其中包含一个简单的select语句,它将显示用户团队的详细信息。我还想包括球员的名字和姓氏,它们链接到user_team position id字段中的外键。但是,我

我正在创建一个fantasy football android应用程序,通过php文件和SQL获取JSON数据。我的问题涉及两个表:

玩家详细信息

  • 玩家id(主键)
  • 名字
用户团队 (除PK外的所有id字段都是链接到玩家id的外键)

  • 用户\团队\ id(主键)
  • 守门员
  • 右后卫
  • 左后卫
  • 等等
我希望能够运行一个PHP脚本,其中包含一个简单的select语句,它将显示用户团队的详细信息。我还想包括球员的名字和姓氏,它们链接到user_team position id字段中的外键。但是,我所能做的就是只显示用户团队详细信息和球员id

SELECT *
FROM   user_team
WHERE  user_id = '".$uid."'

在这种情况下,您必须根据您所在团队的职位数量,进行尽可能多的
加入

为了提高数据的一致性,可以通过引入
positions
表来进一步规范化数据,而不是通过id在
team_positions
中引用数据

同时,user_team表将只保留团队的详细信息,比如名称和任何其他您想放在那里的东西(可能是徽章?),以及团队id

这样,您将拥有非常灵活的结构。在关系数据库模型中,这是非常常见的方法

SELECT u.user_team_name, p1.goalkeeper_name, p2.rightback_name, p3.leftback_name, ...
FROM user_team u
   LEFT JOIN player_details p1 ON u.goalkeeper_id = p1.player_id
   LEFT JOIN player_details p2 ON u.rightback_id = p2.player_id
   LEFT JOIN player_details p3 ON u.leftback_id = p3.player_id
   ...
WHERE u.user_team_id = <some id>
CREATE TABLE team_positions (
   player_id INT,
   team_id INT,
   position TEXT,

   FOREIGN KEY player_id
      REFERENCES player_details(player_id)

   FOREIGN KEY team_id
      REFERENCES user_team(user_team_id)
);