我正在创建一个幻想足球Android应用程序,其中获取JSON数据是使用php文件和SQL完成的。我的问题涉及2个表:
player_details
user_team (除PK外的所有id字段都是链接到player_id的外键)
我希望能够运行一个PHP脚本,其中包含一个简单的select语句,它将显示用户团队的详细信息。我还想要包含播放器的名字和姓氏,它们与user_team位置id字段中的外键相关联。但我只能显示user_teams详细信息和players_id。
SELECT *
FROM user_team
WHERE user_id = '".$uid."'
答案 0 :(得分:1)
在这种情况下,你必须尽可能多地为你的团队所拥有的职位数JOINs
。
像,
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)
);
为了增加数据的一致性,可以通过引入positions
表进一步规范化,而不是通过id在team_positions
中引用它。
与此同时,user_team表将仅保留团队详细信息,例如名称&amp;你想放在那里的任何其他东西(徽章,也许?),以及团队ID。
这样,你将拥有相当灵活的结构。这通常是在关系数据库模型中做事的方式。