![](/img/trans.png)
[英]How to Make Multiple Select with a Common Where Clause in Single Query?
[英]Multiple select query with single where clause?
我正在創建一個消息傳遞系統。 其中有兩種類型的用戶admin和user。
管理員可以向所有用戶發送消息,而用戶可以向管理員發送消息。
我正在嘗試獲取
$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();
兩個查詢都可以正常工作。
我想將兩個查詢都包含在內。
我想使用單個where子句運行多個選擇查詢,該子句顯示用戶發送給管理員的最后一條消息。
誰能給我任何想法?
您可以使用以下查詢
$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();
您的控制器
$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
$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();
要獲取最后一條消息,請使用子查詢,如:
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);
請更正以上查詢中單引號的使用作為其演示。
$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();
我已經解決了我的問題。
語氣
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.