我正在创建一个消息系统。其中有两种类型的用户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的最后一条消息
任何人都可以给我任何想法吗?
答案 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();
}