我仍然在学习SQL,而我的大脑与这个关系很难。从“多对多”的SQL关系中选择*
说我有3个表:
teams
players
和teams_players
作为我的链接表
所有我想要做的就是运行一个查询来获取每个团队和他们的球员。
我尝试这样做:
SELECT *
FROM teams
INNER JOIN teams_players
ON teams.id = teams_players.team_id
INNER JOIN players
ON teams_players.player_id = players.id
但它返回一个单独的一行每队每个球员。加入正确的方式来做到这一点,或者我应该做其他事情吗?
-----------------------------------------编辑
好吧,从我听到的情况来看,这不一定是一种不好的方法。当我正在做循环时,我将不得不按照团队对数据进行分组。
我还没有尝试过提供的修改过的SQL语句,但我今天会回复给您。
要回答关于结构的问题 - 我想我没有想到返回的行结构是导致我混淆的一部分。在这种特殊情况下,每队仅限于4人(或更少),所以我想这将有助于我的结构是类似如下:
teams.id, teams.name, players.id, players.name, players.id, players.name, players.id, players.name, players.id, players.name,
1 Team ABC 1 Jim 2 Bob 3 Ned 4 Roy
2 Team XYZ 2 Bob 3 Ned 5 Ralph 6 Tom
编辑你的SQL语句让它在屏幕上更具可读性如果你不介意 –
这看起来像预期的行为。你能举一个你期望的结果行的例子吗?我不知道如何将球队和所有球员作为结果集中的一排返回。 –
如果您想要特定团队的结果 - 您需要添加一个将结果限制为特定团队的“WHERE”子句。哦,'SELECT *'被大多数DBA所诟病,所以你应该指定你想要的列 –