簡體   English   中英

使用單where子句的多選擇查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM