我的数据库中有3个表,team1
表中的team2
和Matches
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相关,我失败了,获取组名很简单,但我在单个查询中未能获得所有上述内容
问题:
这可以在单个查询中使用吗?
可以使用CodeIgniter的“Active Record Class”来完成吗?
答案 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();