我有两个表,分别是 1>个用户 2> profile_action
id name uid profile_id action_type
1 aa 1 2 bookmark
2 bb 2 3 view
3 cc 1 3 like
现在我想要基于以下两个条件的数据
为此,我已经完成了
$bscDta = $this->db->select('profile_id')
->from('profile_action')
->where(array('user_id'=>1,'action_type'=>'like'))
->or_where('action_type','bookmark')
->get();
$exceptionalId = $bscDta->result();
foreach ($exceptionalId as $exid) {
$excptnlId .= $exid->profile_id.",";
}
$excptnlId = rtrim($excptnlId,",");
$quickSrch = $this->db->select('*')
->from('users')
->where(array('id!='=>1,'status'=>'Active'))
->where_not_in('id', $excptnlId)
->get();
$quickSrchData = $quickSrch->result();
但是它将返回以下查询
SELECT * FROM `users` WHERE `id` != 1 AND `status` = 'Active' AND `id` NOT IN('2,3')
和我在一起
[id] => 3 's data
其中期望的o / p为空白。所以还有其他方法可以同时进行两种操作 在一次操作中。
答案 0 :(得分:0)
尝试使用 JOIN
$this->db->select('users.*, profile_action.profile_id');
$this->db->from('users');
$this->db->join('profile_action', 'users.id = profile_action.uid');
$this->db->where("(profile_action.action_type = like OR profile_action.action_type = bookmark)");
$this->db->where('user.user_id !=', 1);
$this->db->where('user.status', 'Acitve');
return $this->db->get()->result();