を使用して多対多の関係を持つ2つのテーブルからデータを表示する - 最初のものは、ユーザーと呼ばれるフィールドがあります。は、私は2つのテーブル間の単純な接続を作っていますPHP/CodeIgniterの
を|| id ||名前||
とグループと呼ばれる第二のテーブルは、同じフィールドを有する:
|| id ||名前||
1人のユーザーが多数のグループに参加することができ、グループには複数のユーザーが含まれているため、これらの関係は多岐にわたります。だから私は3番目のテーブルuser_groupフィールドを持っています:
|| user_id || group_id ||
ここで、両方ともユーザ用であり、1つはグループ用のforegin鍵です。
目標は、すべてのグループとそれぞれのグループに参加しているリストを作成することです。私は私のクエリを作っこのため :
$q = $this->db->query('SELECT u.name FROM users u
JOIN user_group ug ON u.id = ug.user_id
JOIN groups g ON g.id = ug.group_id WHERE ug.group_id = "4" ');
、その後は、アクティブなレコードを使用して、それを修正:
$this->db->select('users.name');
$this->db->from('users');
$this->db->join('user_group', 'user_group.user_id = users.id');
$this->db->join('groups', 'groups.id = user_group.group_id');
$this->db->where('user_group.group_id', 3);
$q = $this->db->get();
そして、私はグループテーブルから「ID」与えられたことによって、任意のグループのユーザーを取ることができ、このよう。しかし、私が理解できないことは、参加するユーザーとグループの名前の両方を表示する方法です。私がテーブルを作成して削除すると、idが非常に不調になり、20のグループがあり、いくつかのグループにid = 53があるので、1からnumber_of_groupsまでのループは十分ではありません。これを行う方法は何ですか?
おかげ Leron
クエリ結果から直接グループ名/ユーザー名にアクセスできるように、テーブルの1つ(またはその両方)の 'name'列のエイリアスを設定することをお勧めします。 http://www.w3schools.com/sql/sql_alias.aspを参照してください。 – rjz
エイリアスがここでの主な問題ではないと思います。あなたは私のfirsのクエリを見ることができます - それはエイリアスがありますが、私が望む情報を表示するのに役立つ方法を見ていません。 – Leron