如何在单独的表中显示与user = x WHEN的ID对应的所有MYSQL表值

时间:2020-02-03 01:50:49

标签: mysql

我仍然将自己归类为PHP和mysqli数据库的初学者,我可以使用一些帮助。我在网站上四处张望,找不到清晰的答案。

我目前有一个表格,其中有150位运动员,每个运动员都被分配了一个自动递增ID(第一个“ athlete_id”),并在其他各列中为每位运动员提供了一些统计信息,例如:MySQL 'athletes' table < / p>

接下来,我在同一数据库中还有一个名为'selection'(image here)的表 在选择表中,有一个ID列,该列从我的会话中收集已登录的用户ID,并将users_id放入“选择”中ID的第1列。剩余的列是运动员的ID(athlete_id),其中已登录的用户已选择并已插入到表格中。运动员1,运动员2等的ID对应于“运动员”中的SPORTS_ID(表1)

我想做的也许是从会话中选择users_id(我已经完成了,对于本示例,我在会话中使用“ 21”作为“ user_id”),然后抓取用户在在“运动员1”,“运动员2”等列下的“选择”表中,然后将“运动员ID”替换为“运动员表”中的真实姓名和统计信息。

在下面,我加入了表格,但是通过这种方式,它仅向运动员3显示了用户21的选择,并且我不确定如何以有效的方式显示用户21的所有选择。我如何显示从用户21中选择的所有运动员?

SELECT * FROM athletes LEFT JOIN selection ON athletes.athlete_id=selection.athlete3 WHERE id=21

将来,我将使用此信息通过网站上的HTML表向登录用户显示所选运动员以及运动员统计信息。我做了this example来表示我的最终目标。

我将每种运动员选择存储在单独的列(运动员1,运动员2,运动员3)中的方式在我的情况下可能效率极低,如果有另一种更简单的方法来实现相同的结果,我会非常感谢技巧,我可以改变整个方法来解决此问题。

我已经考虑过将所选的sports_id存储在一列中,并用逗号隔开:4,8,9 但是不确定如何执行此操作,因此,如果这是一个更简单的解决方案,我可以向经验丰富的人员寻求帮助。

1 个答案:

答案 0 :(得分:1)

我会尽力解决您的问题。如果要执行联接查询,则必须具有与其他表列相同的列。

与您的情况一样,selection表中必须有1列,该列与athletes表的athlete_id相同。因此,您将生成查询。

SELECT * FROM athletes 
LEFT JOIN selection ON athletes.athlete_id = selection.athlete_id 
WHERE selection.id = 21;

希望这可以解决您的问题。