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');

希望有人对如何解决这个问题有任何意见:-)

4

2 回答 2

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);
于 2013-02-19T01:07:28.920 回答
0

我们重新来过吧:

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

SQLfiddle

于 2013-02-18T23:58:05.007 回答