Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql(mysql)中与旧用户相关的用户列表_Mysql_Codeigniter_Activerecord - Fatal编程技术网

sql(mysql)中与旧用户相关的用户列表

sql(mysql)中与旧用户相关的用户列表,mysql,codeigniter,activerecord,Mysql,Codeigniter,Activerecord,我在数据库中有这个表: user -id -name -role_id (related to a role-table) 示例数据: name of user1. id=1, role_id = 2, old_userid = 0 name of user2. id=2, role_id = 2, old_userid = 0 name of user3. id=3, role_id = 2, old_userid = 0 name of user4, id=4, role_id = 3,

我在数据库中有这个表:

user
-id
-name
-role_id (related to a role-table)
示例数据:

name of user1. id=1, role_id = 2, old_userid = 0
name of user2. id=2, role_id = 2, old_userid = 0
name of user3. id=3, role_id = 2, old_userid = 0
name of user4, id=4, role_id = 3, old_userid = 2
name of user5, id=5, role_id = 3, old_userid = 2
name of user6, id=6, role_id = 3, old_userid = 4
name of user2[user4, user5] //user4 and user5 has older_userid as 2
name of user6[user4]        //user6 has older_userid as 4
通过执行以下操作,我可以获得此旧用户列表:

$this->db->select('u.name')->from('user u');      
$this->db->where('u.old_userid >', '0');
它会回来的

name of user4  
name of user5
name of user6
但是我想要:

name of user1. id=1, role_id = 2, old_userid = 0
name of user2. id=2, role_id = 2, old_userid = 0
name of user3. id=3, role_id = 2, old_userid = 0
name of user4, id=4, role_id = 3, old_userid = 2
name of user5, id=5, role_id = 3, old_userid = 2
name of user6, id=6, role_id = 3, old_userid = 4
name of user2[user4, user5] //user4 and user5 has older_userid as 2
name of user6[user4]        //user6 has older_userid as 4
role\u id=3
与旧用户相同(具有role\u id的用户始终具有旧用户id>0)

我被困在这里了。想想这样的事情:

$this->db->select('u.id, u.name, GROUP_CONCAT(old_userid) AS uid')->from('user u');
$this->db->group_by('u.old_userid');
请帮助某人…-)

我很欣赏纯sql的答案。

你可以这样做

$this->db
     ->select('o.name, GROUP_CONCAT(u.name) AS `old_users`' ,FALSE)
     ->from('user u')
     ->join('user o','u.old_userid=o.id','LEFT')
     ->where('u.role_id',3)
     ->group_by('u.old_userid')
     ->get()
     ;

注意:您需要在select的第二个参数中设置pas FALSE,这样它就不会受到额外的反勾号的影响。非常感谢!:-)