0

tbl_teams: team_id | team_name
tbl_players: player_id | player_fname | player_sname | player_bplace | player_bdate
tbl_players_stats: player_id | 季节ID | player_squad_no | team_id | 播放器应用程序 | player_goals

对不起,如果这是一个基本问题,但是从上面的所有 MySQL 表和列中,我想加入这些表,然后显示选择 season_id 和 team_id 的结果。我需要像这样使用 PHP:

player_squad_no | player_sname, player_fname | 团队名称 | 播放器应用程序 | player_goals

我已经查看了此处的示例,但仍然无法弄清楚如何编写 MySQL 查询来使用三个单独的表以及如何在列名之前指定表名。我见过一些只有首字母的例子。例如 tt.teams。是 Left Join 的方式吗?

任何帮助将非常感激。

4

4 回答 4

1

使用三个单独的表,您只需像这样编写连接:

SELECT *
FROM Table_A AS A
LEFT JOIN Table_B AS B USING(ID)
LEFT JOIN Table_C AS C USING(ID)

请注意,当您要加入的列在两个表中具有相同名称时,您可以使用USING(column)该语法替代方法。ON A.column = B.column

在上面的示例中,表使用别名,AS以便您可以通过别名而不是完整的表名来引用它们。(AS实际上是可选的;如果您按角色付费,则可以在表格之后立即给出别名。)尝试选择一个在您查看时有意义的别名;很多时候人们会这样别名:

SELECT a.Name, b.State
FROM Customers AS a
LEFT JOIN Orders AS b
...etc.

但是如果你有一个更长的查询,你应该如何记住ab引用哪些表?至少,别名Customers AS COrders AS O;是有意义的。在某些情况下,我会更进一步:Registration AS REG例如。JOIN随着越来越多的桌子在一起,这变得越来越重要。

这是编写查询的一种方法:

SELECT
    Stats.player_squad_no,
    CONCAT_WS(', ', Players.player_sname, Players.player_fname) AS player_full_name,
    Teams.team_name,
    Stats.player_apps,
    Stats.player_goals
FROM tbl_players AS Players
LEFT JOIN tbl_players_stats AS Stats USING(player_id)
LEFT JOIN tbl_teams AS Teams USING(team_id)

包含该CONCAT_WS()功能以按照您希望显示的方式组合播放器的全名。由于这个函数会输出一个名称混乱的列,所以我也给它起了一个别名。

于 2013-09-04T17:38:19.337 回答
0
    SELECT player_squad_no , player_sname, player_fname,team_name, player_apps, player_goals
 FROM tbl_players_stats as s 
JOIN tbl_players as p ON s.player_id=p.player_id 
JOIN tbl_teams as t ON s.team_id=t.team_id
于 2013-09-04T17:30:52.603 回答
0

这应该工作

SELECT tbl_players_stats.player_squad_no, 
    tbl_players.player_sname, 
    tbl_players.player_fname, 
    tbl_teams.team_name, 
    tbl_players_stats.player_apps, 
    tbl_players_stats.player_goals
FROM tbl_players 
    JOIN tbl_players_stats ON tbl_players.player_id = tbl_players_stats.player_id 
    JOIN tbl_teams ON tbl_teams.team_id = tbl_players_stats.team_id
于 2013-09-04T17:53:59.147 回答
-1

没有加入是一个简单的概念。但是我们应该为表格使用适当的列。在选择要选择的列列表时,我们应该小心使用表别名。试试下面的代码

select c.player_squad_no,b.player_sname,b.player_fname,a.team_name,c.player_apps,c.player_goals
  from tbl_teams a,tbl_players b,tbl_players_stats c
 where a.team_id=c.team_id 
   and b.player_id=c.player_id
于 2013-09-04T17:50:30.687 回答