Php 在一个函数中使用三个查询的Codeigniter
我有三张桌子 用户:Php 在一个函数中使用三个查询的Codeigniter,php,mysql,database,codeigniter,join,Php,Mysql,Database,Codeigniter,Join,我有三张桌子 用户: 身份证 用户名 密码 第二桌 朋友 身份证 粘虫 朋友 最后一个呢 CI_会议 会话号 用户id=默认值=0 用户数据 我要密码点火器查询 select * from users where userid=$userid select * from friends where myid=$userid or friend_id=$userid select * from ci_sessions where user_id=$userid and user_da
- 身份证
- 用户名
- 密码
- 身份证
- 粘虫
- 朋友
- 会话号
- 用户id=默认值=0
- 用户数据
select * from users where userid=$userid
select * from friends where myid=$userid or friend_id=$userid
select * from ci_sessions where user_id=$userid and user_data!=''
返回结果()
是否有可能在一个声明中获得所有三个
我试着这样做
function check_friends($username) {
$this->db->where('username',$username);
$q1 = $this->db->get('users');
$myid=$q1->row('userid');
if($username !='' ){
$this->db->select('*');
$this->db->from('users');// I use aliasing make joins easier
$this->db->where('userid',$myid);
$this->db->join('myfriends AS friends_tpl', 'friends_tpl.myid = '.$myid.' or friends_tpl.fid='.$myid.'', 'FULL');
$this->db->join('ci_sessions AS B', 'B.id_unite = A.userid', 'INNER');
$this->db->where('B.user_data !=','');
$this->db->where('B.id_unite !=','0');
$query = $this->db->get();
return $query->result();
}else{
}
}
更新
我尝试这个查询
$query = $this->db->query("select * from users as u inner join myfriends as f on f.fid = '".$this->session->userdata('userid')."' or f.myid= '".$this->session->userdata('userid')."' inner join ci_sessions as c on c.id_unite = u.userid where u.username != '$username' GROUP BY u.userid ");
但有一个问题,这个查询的结果不正确
这是friends表的值
身份证|我的身份证|朋友身份证
1 | 50 | 54
2 | 57 | 50
现在如果有三个用户登录,查询将显示用户54是用户57的朋友,我不知道w7y,你喜欢这样吗
$query = $this->db->query( 'SELECT * -----
UNION ALL
SELECT * -----
UNION ALL
SELECT *---' );
这将给出所有结果…但结果将来自witch table?为什么不调用您的模型三次以执行您的三个问题?因为此功能将仅返回在线朋友,如果我按照您所说的那样,我将获得所有用户,不仅是我的朋友,而且是在线用户。您的联合查询有什么问题?