tbl_teams:
team_id|team_name
tbl_players:
player_id|player_fname|player_sname|player_bplace|player_bdate
tbl_players_stats:
player_id|season_id|player_squad_no|team_id|player_apps|player_goals
如果这是一个基本问题,很抱歉,但从上面所有的MySQL表和列中,我想加入这些表,然后显示选择season_id和team_id的结果。我需要使用这样的PHP:
player_squad_no|player_sname,player_fname|team_name|player_apps|player_goals
我看了这里的例子,但仍然不知道如何编写MySQL查询来使用三个独立的表,以及如何在列名之前指定表名。我见过一些只有首字母的例子。例如tt.teams。Left Join是这样做的吗?
任何帮助都将不胜感激。
使用三个独立的表,您只需像这样编写联接:
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.
但是,如果你有一个更长的查询,你应该如何记住a
和b
指的是什么表?至少,将Customers AS C
和Orders 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()
功能用于按照您指示的显示方式组合玩家的全名。由于这个函数会输出一个名称混乱的列,所以我还给它起了一个别名。
这应该能在中工作
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
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
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