私はmysqlで失敗し、実際にいくつかの助けを借りて行うことができます。それが何と呼ばれるかわかりません。DISTINCTとGROUPBYを組み合わせて使用しようとしても、うまくいきません。
これらの列を持つサーバー監視データのテーブルがあります。
nStatusNumber
Bandwidth
Load
Users
ServerNumber
DiskFree
MemFree
TimeStamp
**nStatusNumber** - A unique number increasing for each entry
**ServerNumber** - A unique number for each server
このためのダッシュボードの上部には、一意のサーバーごとに最新のレポートを表示する必要があります。
//監視しているサーバーの数は?
$nNumServers = mysql_numrows(mysql_query("SELECT DISTINCT(ServerNumber) FROM server_status;"));
//サーバーのリストを取得します
$strQuery = "SELECT * FROM server_status ORDER BY nStatusNumber DESC limit ".$nNumServers.";";
次に、$nNumServersに到達するまで結果をループします。これは、サーバーがダウン/アップし始め、レポートの順序が乱雑になるまで、最初は機能していました。20台のサーバーがあるとすると、最新の20件の結果は必ずしも各サーバーから1つであるとは限りません。
私は急いでこれを理解しようとしていますが、失敗しています。私はこれまで、DISTINCTとGROUP BYのさまざまな組み合わせを試しましたが、運が悪かったので、答えがわからない、おそらく恥ずかしいほど簡単な問題についてのガイダンスをいただければ幸いです。
ありがとう!
PS-これは私が試しているクエリの例で、私が抱えている問題を示しています。「nStatusNumber」フィールドを確認してください。これらは各サーバーの最新の結果のみを表示しているはずです-http://pastebin.com/raw.php?i= ngXLRhd6
PPS-max(nStatusNumber)を設定しても、正確な結果は得られません。平均/合計/中央値は必要ありません。各サーバーから報告された最新の実際の数値が必要です。クエリの結果の例は次のとおりです:http://pastebin.com/raw.php?i = eyuPD7vj