2012-05-21 53 views
2

有一個PHParray從MySQL tablesorted記錄填充:如何在MySQL數據庫的底部顯示「null」值(html表格)?

function recupererDroitCreateur($user_id, $isAdmin = null) { 
     $ret = array() ; // this will be the returned array 

     // Requête de sélection de tous les menus 
     $sSQL = "SELECT m.menu_code, m.menu_lib, m.menu_action, m.menu_titre, cm.class_menu_lib, cm.class_menu_code 
        FROM menu m 
        LEFT JOIN classe_menu cm 
        ON m.class_menu_code = cm.class_menu_code 
        WHERE m.menu_deleted = 0 AND m.menu_visible = 1 
        ORDER BY cm.class_menu_lib, m.menu_titre"; 
     $this->db->query($sSQL) ; 
     $ret['cnt'] = $this->db->num_rows(); 
     $i = 0; 
     while ($this->db->next_record()) { 
      $ret[$i]["menu_code"] = $this->db->f('menu_code'); 
      $ret[$i]["menu_lib"] = stripslashes($this->db->f('menu_lib')); 
      $ret[$i]["menu_action"] = stripslashes($this->db->f('menu_action')); 
      $ret[$i]["menu_titre"] = stripslashes($this->db->f('menu_titre')); 
      $ret[$i]["class_menu_lib"] = stripslashes($this->db->f('class_menu_lib')); 
      $ret[$i]["class_menu_code"]  = stripslashes($this->db->f('class_menu_code')); 
      $i++; 
     } 

     return ($ret); 
    } 

有在「cm.class_menu_lib」列是查詢的排序列null值。所以當在html表中顯示數組的內容時,首先顯示空記錄!如何最後顯示空記錄?

回答

4
SELECT m.menu_code, m.menu_lib, m.menu_action, m.menu_titre, cm.class_menu_lib, cm.class_menu_code 
FROM menu m 
LEFT JOIN classe_menu cm 
ON m.class_menu_code = cm.class_menu_code 
WHERE m.menu_deleted = 0 AND m.menu_visible = 1 
ORDER BY cm.class_menu_lib IS NULL, cm.class_menu_lib, m.menu_titre 

基本上NOT NULL < NULL,所以你添加,作爲第一個排序鍵。

實際行動中:http://www.sqlfiddle.com/#!2/226a4/1

+0

聰明!從來沒有這樣做過。順便說一句,你不需要'SELECT'中的'cml_is_null';在ORDER BY'子句中有表達式是可以的。 – Romain

+0

@pheromix它有什麼問題?你沒有幫助任何人只是「不行」斷言= S –

+0

@Romain剛剛驗證它並更新了我的答案,謝謝! –

相關問題