【问题标题】:How to join multiple tables with aliases如何使用别名连接多个表
【发布时间】:2019-07-17 11:08:25
【问题描述】:

我在数据库中有 3 个表:

团队

  • 身份证
  • 姓名

匹配

  • id (int)
  • team_home_id
  • team_away_id

目标

  • 身份证
  • match_id
  • team_id
  • 时间

我需要在控制器中获得目标的视图中显示团队名称。

我知道我应该加入表格。

我有这个代码:

    public function get_goals() {
        $this->db->select('goals.*');
        $this->db->from('goals');
        $this->db->join('matches', 'matches.id = goals.match_id');
        $q = $this->db->get();

        return $q->result();
    }

我不知道接下来会发生什么。

我需要通过以下方式查看显示名称:

$goals->team_home_name$goals->team_away_name

【问题讨论】:

  • 使用另一个查询而不是连接。
  • 在给定的 SQL 查询中在表 'teams' 上添加连接,根据要求选择字段,然后将其传递给视图。

标签: php mysql codeigniter join codeigniter-3


【解决方案1】:

要获得$goals->team_home_name$goals->team_away_name 结果,请使用这样的别名:

public function get_goals() {
    $this->db->select('goals.*, home_team.name team_home_name, away_team.name team_away_name');
    $this->db->from('goals');
    $this->db->join('matches', 'matches.id = goals.match_id');
    $this->db->join('teams home_team', 'home_team.id = matches.team_home_id');
    $this->db->join('teams away_team', 'away_team.id = matches.team_away_id');
    $q = $this->db->get();

    return $q->result();
}

【讨论】:

  • 好的,但是 $goals->team_home_name 和 $goals->team_away_name 应该与matches.team_home_id和matches.team_away_id连接而不是goals.team_id。不知道能不能理解:(
【解决方案2】:

你可以试试这个:-

public function get_goals() {
    $this->db->select('g.* , t.name as team_home_name , t.name as team_away_name);
    $this->db->from('goals as g');
    $this->db->join('matches as m', 'm.id = g.match_id');
    $this->db->join('teams as t', 't.id = g.team_id');
    $q = $this->db->get();
    return $q->result();
}

【讨论】:

  • “字段列表”中的未知列“t.team_home_name”
  • $this->db->select('g.* , t.name as team_home_name , t.name as team_away_name);
【解决方案3】:

你可以使用别名

猜测 team_away_name 和 team_home_name 从 teams 表中

public function get_goals() {
        $this->db->select('goals.*, team.team_home_name, team.team_away_name');
        $this->db->from('goals');
        $this->db->join('matches', 'matches.id = goals.match_id');
        $this->db->join('teams as team', 'team.id = goals.team_id');
        $q = $this->db->get();

        return $q->result();
    }

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 2023-02-23
    • 2013-11-11
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多