Php Codeigniter mysql查询使用UNION选择等于今天日期的值

Php Codeigniter mysql查询使用UNION选择等于今天日期的值,php,mysql,codeigniter,Php,Mysql,Codeigniter,我想从Codeigniter上的模型修改以下查询: public $table = 'fi_client_notes'; public $primary_key = 'fi_client_notes.client_note_id'; public function default_select() { $this->db->select("SQL_CALC_FOUND_ROWS fi_client_notes.*, fi_

我想从Codeigniter上的模型修改以下查询:

public $table                 = 'fi_client_notes';
public $primary_key           = 'fi_client_notes.client_note_id';

public function default_select()
{
    $this->db->select("SQL_CALC_FOUND_ROWS fi_client_notes.*, fi_clients.client_name", FALSE);

    if ($this->session->userdata('user_id') <> 1)
    {
        $this->db->where('fi_clients.user_id', $this->session->userdata('user_id'));
    }
}

public function default_order_by()
{
        $this->db->order_by('fi_client_notes.client_note_date DESC');
}

public function default_join()
{
    $this->db->join('fi_clients', 'fi_clients.client_id = fi_client_notes.client_id');
}

但我不知道如何在Codeigniter上使用它,因为Codeigniter的ActiveRecord不支持UNION

在这种情况下,您可以在没有UNION的情况下获得结果,只需添加n.client\u note\u end CURDATE作为order by子句的顶级

SELECT c.client_name, n.* 
     FROM `fi_client_notes` as n 
       JOIN
          `fi_clients` as c
         ON c.`client_id` = n.`client_id`
     ORDER BY (n.`client_note_end` <> CURDATE()),
              `n.`client_note_date` DESC LIMIT 15

虽然我不理解n.client\u note\u end CURDATE,n.client\u note\u date DESC LIMIT 15下订单的含义,但这是完美的。在这种情况下是什么意思?实际上它是按0排序的。n、 客户说明日期和1。n、 client_note_date,因为mysql将布尔值false和true转换为0和1,这意味着它返回的日期与今天的日期不相等false@DavidM你明白了吗?mysql将其强制转换为1,所有这些记录将放在0 false返回的记录之后,因为我们将第一个键升序排序。然后在每个组中按降序排列键
SELECT c.client_name, n.* 
     FROM `fi_client_notes` as n 
       JOIN
          `fi_clients` as c
         ON c.`client_id` = n.`client_id`
     ORDER BY (n.`client_note_end` <> CURDATE()),
              `n.`client_note_date` DESC LIMIT 15