2013-10-13 96 views
0

我目前有以下代碼,它輸出數據庫中名稱的唯一出現次數以及名稱(對於大多數常見的100個名稱)。該代碼工作正常,輸出看起來是這樣的:使用PHP對不同字段的mysql輸出進行排序

Smith  71 
Ryan  49 
White  39 
Brown  23 

我想重複一個表中的列表旁邊一個與名字的字母順序進行排序,而不是輸出。

Smith  71    Brown  23 
Ryan  49    Ryan  49 
White  39    Smith  71 
Brown  23    White  39 

有沒有這樣做,作爲MySQL的搜索請的一部分的任何方式,或者我需要的值存儲在一個數組時,我做的第一環,然後排序和輸出數組?

如果是後者,任何人都可以提出高效的代碼。

$query2 = "SELECT family_name, COUNT(*) as count FROM nametable 
      WHERE locationkey = $location 
      GROUP BY family_name ORDER BY count DESC"; 
$table2 = mysql_query($query2); 
$count2 = mysql_num_rows($table2); 
$tot = 0; 
echo '<table>'; 
while ($tot < $count2 && $tot < 100) { 
    $rec2 = mysql_fetch_array($table2); 
    echo '<tr><td>',$rec2[0],'</td><td width="40">&nbsp;</td><td>',$rec2[1], '</td></tr>'; 
    $tot++; 
} 
    echo '</table>'; 

回答

0

可能做到這一點,你沒有提到的唯一途徑是擁有兩個查詢電話,只是用不同的ORDER BY,但隨後你可以使用所有相同的代碼(也許在一個函數中)繪製表格。就像把整個代碼塊放在一個帶有變量的函數中一樣... $ orderBy。然後,您所做的唯一更改就是$ query2定義,只需以「ORDER BY $ orderBy」結束;合理?

+0

這確實有道理。我只是認爲數組選項可能不是服務器上的負載,因爲數據庫大約有750,000條記錄,但我通常會選擇500條記錄。儘管相關字段已編入索引。 – user2605793

相關問題