比较表并在Codeigniter中获取数据

时间:2019-01-10 06:26:52

标签: php mysql sql codeigniter join

我有两个表,分别是 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

现在我想要基于以下两个条件的数据

  • 其中uid!= profile_action表中的m_session_id
  • 并删除我喜欢或添加了书签的用户

为此,我已经完成了

$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为空白。所以还有其他方法可以同时进行两种操作  在一次操作中。

1 个答案:

答案 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();