Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Codeigniter:Błąd w zapytaniu ORDER BY CASE

Dokumentacja CodeIgniter wskazuje, że instrukcje case w klauzuli order by nie są obsługiwane w klasie Active Record. Zalecam refaktoryzację wywołania SQL, tak aby instrukcja case była częścią klauzuli select. Coś takiego jak poniżej powinno załatwić sprawę.

$this->db->select("p.*,u.firstname, u.lastname,s.title AS industry, pt.type_name, al.length_value, CASE p.submit_to WHEN 'writer' THEN 2 WHEN 'students' THEN 1 ELSE 0 END AS ordered_submit_to",FALSE);
$this->db->from($this->_tbl_projects . ' as p');
$this->db->join($this->_tbl_client_details . ' as c', 'c.id = p.client_id', 'left');
$this->db->join($this->_tbl_users . ' as u', 'u.id = c.user_id', 'left');
$this->db->join($this->_tbl_project_types . ' as pt', 'pt.project_type_id = p.project_type_id', 'left');
$this->db->join($this->_tbl_specializations . ' as s', 's.specialization_id = p.specialization_id', 'left');
$this->db->join($this->_tbl_article_length . ' as al', 'al.article_length_id = p.article_length_id', 'left');
$this->db->order_by('ordered_submit_to', 'ASC');
$this->db->order_by('p.request_end_date', 'ASC');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pytanie o wyzwalacz MySQL:wyzwalanie tylko wtedy, gdy zmienia się kolumna?

  2. MySQL — połączenie INSERT, VALUES i SELECT?

  3. Jak używać zmiennych użytkownika w klauzuli MySQL LIKE?

  4. Odpowiednik Laravel-5 „LIKE” (Eloquent)

  5. mysql przenieś wiersz między tabelami