我正在尝试获取与登录用户在同一团队中的所有成员。
表示例:
团队表:
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');
希望有人对如何解决这个问题有任何意见:-)
我不确定,但我猜你想从登录用户所在的团队中获得所有成员。在这种情况下,请尝试:
$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);
我们又来了:
SELECT *
FROM member
WHERE team_id=(SELECT team_id FROM member WHERE uid=4)
请参阅SQLfiddle