【发布时间】:2012-03-30 03:55:11
【问题描述】:
我正在两个表之间建立简单的连接 - 第一个名为 users 的表有字段:
||编号 ||姓名 ||
第二个名为 groups 的表具有相同的字段:
||编号 ||姓名 ||
它们之间的关系很复杂,因为一个用户可以在许多组(感兴趣的)中,并且一个组将包含多个用户。所以我有第三个表 user_group 字段:
||用户名 || group_id ||
两者都是外键,一个用于用户,一个用于组。
我们的目标是列出所有小组和每个小组的参与者。 为此,我提出了疑问:
$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 还不够好。这样做的方法是什么?
谢谢 勒隆
【问题讨论】:
-
您可能希望在一个(或两个)表中为
name列设置别名,以便可以直接从查询结果中访问组/用户名。见w3schools.com/sql/sql_alias.asp -
我不认为 Alias 是这里的主要问题。您可以看到我的第一个查询 - 它带有别名,但看不到这如何帮助我显示我想要的信息。
标签: php sql codeigniter