使用单个where子句进行多选查询?

时间:2017-05-25 10:38:37

标签: php mysql codeigniter

我正在创建一个消息系统。其中有两种类型的用户admin和用户 管理员可以向所有用户发送消息,用户可以向管理员发送消息 我想抓,

$this->db->select("user_from,count(user_from)as total");
$this->db->from("messages");
$this->db->group_by("user_from");
$query = $this->db->get();
return $query->result_array();

$this->db->select("*");
$this->db->from("messages");
$this->db->where("user_to","admin");
$query = $this->db->get();
return $query->result_array();

单一查询工作正常。
我想将两个查询都包含在一个中 我想使用single where子句运行多个select查询,该子句显示用户发送给admin的最后一条消息 任何人都可以给我任何想法吗?

table screenshot model code

6 个答案:

答案 0 :(得分:2)

您可以使用以下查询

$this->db->select("messages.*,count(messages.user_from) as total");
$this->db->from("messages");
$this->db->group_by("messages.user_from");
$this->db->order_by("messages.user_from","DESC");
$this->db->where("messages.user_to","admin");
$query = $this->db->get();
return $query->result_array();

答案 1 :(得分:1)

  

您的控制器

$this->db->where("user_to","admin");
$this->db->group_by("user_from");
$query = $this->db->get('messages');
$data['result'] = $query->result_array(); // Your Result Array
$data['total'] = $query->num_rows(); // total number of records

// You can pass $data in any view file here
  

您的观点

print_r($result); // result array
echo $total; // total number of records

答案 2 :(得分:1)

$this->db->select("*,user_from,count(user_from)as total");
$this->db->from("messages");    
$this->db->group_by("user_from");
$this->db->where("user_to","admin");
$query = $this->db->get();
return $query->result_array();

答案 3 :(得分:1)

要获取最后一条消息,请使用子查询,如:

select message from messages where id = (select max(id) from messages where user_to = 'admin')

在MySql中测试查询,如果得到你想要的结果,你可以去codeigniter。

在Codeigniter中:

 $this->db->select('message')->from('messages');
 $this->db->where('id = (SELECT max(id) FROM messages where user_to = 'admin')', NULL, FALSE);

请更正上述查询中使用单引号作为其演示。

答案 4 :(得分:1)

$this->db->select("*,user_from,count(user_from)as total");
$this->db->from("messages");    
$this->db->group_by("user_from");
$this->db->where("user_to","admin");
$query = $this->db->get();
return $query->result_array();

答案 5 :(得分:0)

我已经解决了我的问题。

  

<强>模态

function AdminMessages($user)
        {
            $sql = "select * from messages where id in (select max(id) from messages GROUP BY user_from ) AND user_to='".$user."' order by id desc";
            $query = $this->db->query($sql);
            //echo $this->db->last_query();
            return $query->result_array();
        }

        function UserMessages($user)
        {
            $sql = "select * from messages where id in (select max(id) from messages GROUP BY user_to ) AND user_to='".$user."' order by id desc";
            $query = $this->db->query($sql);
            //echo $this->db->last_query();
            return $query->result_array();
        }