这可以在一个查询中完成吗?

时间:2015-03-10 01:25:51

标签: php mysql codeigniter

我的数据库中有3个表,team1表中的team2Matches ID等于team_id表中的TeamNames

group表中的Matches等于group_id表中的GroupNames

Matches

 -----------------------------------
| team1 | team2 |  group  |  count  |
|   3   |   5   |   1     |    1    |
|   1   |   2   |   3     |    0    |
 -----------------------------------

GroupNames

 -----------------------
| group_id |    name    |
|     1    |   Finals   |
|     3    | Semi-Final |
 -----------------------

TeamName

 -----------------------
|  team_id |    name    |
|     5    |   Flowers  |
|     2    |   Rainbow  |
 -----------------------

我需要得到的是:

SELECT team1 , team1_name , team2 , team2_name , group , group_name WHERE count=1

我尝试加入表格,但由于team1和team2中的每一个都应该与TeamName表中的唯一ID相关,我失败了,获取组名很简单,但我在单个查询中未能获得所有上述内容

问题:

  1. 这可以在单个查询中使用吗?

  2. 可以使用CodeIgniter的“Active Record Class”来完成吗?

2 个答案:

答案 0 :(得分:1)

是肯定的。与INNER JOIN。

这是一个组合三个表的示例,如果您希望可以组合更多。

SELECT * FROM matches ma INNER JOIN groups gr ON ma.groupid = gr.groupid INNER JOIN teams te ON ma.teamid = te.teamid WHERE ma.count = 1
祝你好运! 马丁

答案 1 :(得分:1)

回答q1:是的 回答q2:是的

希望这可以帮到你

    $this->db->from('Matches m');
    $this->db->select('m.team1,m.team2,m.group,m.count,tn1.name team1_name,tn2.name team2_name,gn.name group_name');
    $this->db->join('TeamName tn1','tn1.team_id = m.team1');
    $this->db->join('TeamName tn2','tn2.team_id = m.team2');
    $this->db->join('GroupNames gn','gn.group_id = m.group');
    $this->db->where('m.count',1);
    $results=$this->db->get()->result();