我有一个表命名为球员SQL如何INNER JOIN多个值类似字段名
p_id | first | last
========================
1 | Michael | Jordan
2 | Charles | Barkley
3 | Kobe | Bryant
4 | Allen | Iverson
5 | Kevin | Garnett
然后,我有一个名为表用户
u_id | user | player_1 | player_2 | player_3
============================================
1 | John | 1 | 2 | 5
2 | Jane | 3 | 4 | 5
3 | Jim | 2 | 3 | 4
通过对一种形式网站,用户选择他们的球员(领域:player_1,player_2,player_3对应的ID为玩家表
我试图运行一个INNER JOIN,我从用户表和他们的球员选择打印用户(第一,最后)
到目前为止,我有这个
SELECT * FROM users
INNER JOIN players p1 ON player_1 = p1.player_id
INNER JOIN players p2 ON player_2 = p2.player_id
INNER JOIN players p3 ON player_3 = p3.player_id
INNER JOIN players p4 ON player_4 = p4.player_id
INNER JOIN players p5 ON player_5 = p5.player_id
ORDER BY data";
当我跑
while ($row = mysql_fetch_assoc($result_users))
{
$player_1_first = $row['player_name'];
$player_1_last = $row['player_last'];
echo $player_1_first." ".$player_2_last;
}
我只得到用户的最后选择。
我的任务: 我如何才能正确地做到我想达到的目标?
在一个侧面说明,你可能要在数据库标准化阅读起来。我发现你的用户表存在潜在的问题。 – 2013-04-23 16:33:25
你应该改进你的模式,并有一个'users_players'表和'userid | playerid'领域。 – Ejaz 2013-04-23 16:33:41
感谢您的建议@AbeMiessler! – 2013-04-23 16:40:10