1

ログインしているユーザーと同じチームにいるすべてのメンバーを取得しようとしています。

表の例:

チームテーブル:

id     name
1      Test team
2      Second team

メンバーテーブル:

uid     team_id
4       1
10      2
1       2

ログインしたユーザーのuid=4です。

この例では、ログインしているユーザー(uid = 4)は1つのチームにしか属していないため、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 に答える