显示外键列的名称,而不是其id

dm7nw8vv  于 2021-06-17  发布在  Mysql
关注(0)|答案(4)|浏览(210)

我有一个匹配表,它的结构显示在这里

在这个表中,我有列teama,teamb,它们是引用到的外键列 team table的 t_id . 基本上,我想做的是,当我从这个表中选择所有数据时,我希望它显示 teama ,和 teamb 而不是他们的 t_id . 这里是团队表的结构

我正在写的问题如下:

select * 
from teams,matches 
where 
    matches.team_a=teams.t_id 
    and matches.team_b=teams.t_id;
6bc51xsx

6bc51xsx1#

你可以创建视图后加入它是为了让你的工作更简单,为进一步的发展,我改进了福巴斯先生代码如下

CREATE VIEW team AS select 
m.m_id, 
t1.t_name as team_a, 
t2.t_name as team_b, 
m.m_time
 from 
matches m inner join teams as t1 on m.team_a=t1.t_id
inner join teams as t2 on m.team_b=t2.t_id
 order by m.m_id;
f0brbegy

f0brbegy2#

你需要加入两列 matchesteams 表格:

select 
  m.m_id, 
  t1.t_name as team_a, 
  t2.t_name as team_b, 
  m.m_time
from 
  matches m inner join teams as t1 on m.team_a=t1.t_id
  inner join teams as t2 on m.team_b=t2.t_id
order by m.m_id;
igsr9ssn

igsr9ssn3#

需要从表匹配到表组的两个内部联接,如:

SELECT
    ta.t_name,
    tb.t_name
FROM
    matches m
    INNER JOIN team as ta on ta.t_id = matches.team_a
    INNER JOIN team as tb on tb.t_id = matches.team_b
pengsaosao

pengsaosao4#

首先,不要在句子中使用逗号 FROM 条款。始终使用适当的、明确的、标准的 JOIN 语法。你需要两个 JOIN 事实上:

select m.*, ta.t_name as name_a, tb.t_name as name_b 
from matches m left join
     teams ta
     on m.team_a = ta.t_id left join
     teams tb
     on m.team_b = tb.t_id;

它使用 left join 只是为了确保你得到所有的比赛,即使其中一支球队失踪。在这种情况下,这可能不是一个重要的考虑因素,所以 inner join 就相当于。

相关问题