2013-03-07 10 views
9

Voglio ordinare i valori del mio database in ordine decrescente usando questa query qui sotto nel mio modello. Tuttavia, non ordina completamente in ordine decrescente tutti i valori nel database, ma quando viene usato in ordine crescente, funziona bene.

function sort_all_courses_desc($tennant_id) 
{ 
    $this->db->select('*'); 
    $this->db->where('tennant_id',$tennant_id); 
    $this->db->order_by("course_name","desc"); 
    $this->db->from('courses'); 
    $query=$this->db->get(); 
    return $query->result(); 
} 
+3

Sospetto che abbia qualcosa a che fare con il caso del nome del corso. Questo non è stato verificato ma forse potresti tentare di standardizzare il caso per il confronto. '$ this-> db-> order_by (" LOWER (course_name) "," desc ");' –

+1

"O" arriva prima di "S" l'ultimo che ho controllato. Questo è l'ordine decrescente corretto! – landons

risposta

9

Put da prima dove e order_by scorso:

$this->db->select('*'); 
$this->db->from('courses'); 
$this->db->where('tennant_id',$tennant_id); 
$this->db->order_by("UPPER(course_name)","desc"); 

Oppure provate BINARIO:

ORDER BY BINARY course_name DESC; 

è necessario aggiungere manualmente su CodeIgniter per l'ordinamento binario.

E impostare la colonna di caratteri "course_name".

Se ordinamento viene utilizzato su una colonna di tipo di carattere, normalmente l'ordinamento è svolgersi in modo case-insensitive.

Che tipo di dati di struttura nella tabella dei corsi?

Se frustrati si può mettere in serie e tornare con PHP:

Usa natcasesort per l'ordine in "ordine naturale": (Riferimento: http://php.net/manual/en/function.natcasesort.php)

vostro array dal database come ad esempio: $array_db = $result_from_db:

$final_result = natcasesort($array_db); 

print_r($final_result); 
3

mettere la linea $this->db->order_by("course_name","desc"); in cima alla vostra richiesta. Mi piace

$this->db->order_by("course_name","desc");$this->db->select('*'); 
$this->db->where('tennant_id',$tennant_id); 
$this->db->from('courses'); 
$query=$this->db->get(); 
return $query->result();