从一个表中选择所有行,并按另一表中的唯一值分组

时间:2018-08-25 16:46:50

标签: php mysql sql

我有两个表的简单数据库。

teams表中有teamid列。
players表具有列player_nameplayer_agepositionteam_id的列。

team_id表中的

players是外键,它引用team_name表中的teams

我想使用PHP在HTML表中显示此信息,在该表中我将带有​​team_nameplayer_nameplayer_age的标题。

我只需要唯一的team_name值,因为我想使用while循环回显整个表,因此我需要它们仅在标头中回显一次。我希望这是有道理的。

我的问题是,我不知道如何编写查询,该查询将返回team_name表中不同的teams值,但返回players表中的所有球员和年龄信息。

我尝试使用联接,但是最终总是拥有与team_name个值相同数量的player_name个值。

我这样做只是为了锻炼身体,因此现在我不再担心任何安全问题和类似的事情。

1 个答案:

答案 0 :(得分:1)

假设您要显示ID = 3的团队的关系,则可以将联接用作

select t.team_name, p.player_name, p.player_age
from teams t 
inner join players p on p.team_id = t.id
and t.id = 3

或者如果您想要基于团队名称的关系

select t.team_name, p.player_name, p.player_age
from teams t 
inner join players p on p.team_id = t.id
and t.team_name = 'your_preferred_team_name'

如果您希望所有团队都在一个查询中,那么

select t.team_name, p.player_name, p.player_age
from teams t 
inner join players p on p.team_id = t.id
Order by t.id