2013-02-18 41 views
1

我试图让所有成员在同一队伍为用户这是登录会员获取属于团队

表的例子:

团队表:

id  name 
1  Test team 
2  Second team 

构件表:

uid  team_id 
4  1 
10  2 
1  2 

登录的用户已经UID = 4.

在这个例子中,它应该只返回1个用户,因为登录用户(uid = 4)只属于1个团队。

这是我目前所代码,但它采取的所有用户(无论他们是同一个团队的一部分,或者不是)

$this->db->select('*'); 
$this->db->from('teams'); 
$this->db->join('members', 'members.team_id = teams.id'); 
$this->db->join('users', 'members.uid = users.id'); 
$this->db->group_by('uid'); 

希望有人对如何解决任何输入这:-)

+2

您不必为登录用户 – 2013-02-18 23:55:05

+0

还应该采取哪些是球队的一部分,我的 – 2013-02-19 00:17:53

回答

3

我不确定,但我猜你想要从登录用户所属的团队中获得所有成员。在这种情况下可以尝试:

$user_id = 4 or $this->session->userdata('user_id'); 
$sql = "SELECT * FROM (SELECT team_id FROM members WHERE uid = $user_id) tid 
     JOIN members m ON m.team_id = tid.team_id 
     LEFT JOIN team_table tt ON tt.id = m.team_id 
     GROUP BY m.uid"; 
$query = $this->db->query($sql); 
+0

这是一个梦想,谢谢! – 2013-02-19 08:39:40

+0

不客气:) – 2013-02-19 09:04:56

0

又来了:

SELECT * 
FROM member 
WHERE team_id=(SELECT team_id FROM member WHERE uid=4) 

看到SQLfiddle

+0

的一部分,只负责会员where子句需要我自己而不是其他成员,这是我参与其中的一部分:-) – 2013-02-19 00:16:42

+0

它应该只显示你,因为你是团队id 4的唯一成员;团队ID 2将有2个成员 – Andrew 2013-02-19 00:18:48

+0

是的,但是如果我将我的uid添加到团队2的成员表中,由于“where member.uid = 4”,它也只显示我,它应该显示所有成员与我相同的球队的一部分 – 2013-02-19 00:32:24