必要なものを取得するために、凝ったSELECTクエリを作成する方法がわかりません。前処理を行う必要があります。
ある種のプログラム、アプリケーション、スクリプトなどからこのMySQLクエリを実行する必要があります。言語が何であるかはわかりませんが、PHPで行うことは次のとおりです。
/* $data is where our data is going to be stored in our desired format */
$data = array();
/* $columns is a list of all column names */
$columns = array();
/* $rows is a list of all row names (probably '1', '2', etc) */
$rows = array();
$result = mysql_query('SELECT column, value, row FROM TableName');
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
/* if this row isn't in $data yet, add it */
if (!array_key_exists($row['row'], $data) {
$data[$row['row']] = array();
}
/* if this column isn't in $columns yet, add it */
if (!in_array($row['column'], $columns)) {
array_push($columns, $row['column']);
}
/* if this row isn't in $rows yet, add it */
if (!in_array($row['row'], $rows)) {
array_push($rows, $row['row']);
}
/* set the actual value in our multi-dimensional array $data */
$data[$row['row']][$row['column']] = $row['value'];
}
/* free the result (php specific thing) */
mysql_free_result($result);
/* if we didn't set anything (row, column) pairs, set it to null in $data */
foreach ($rows as $r) {
foreach ($columns as $c) {
if (!array_key_exists($c, $data[$r])) {
$data[$r][$c] = null;
}
}
}
これにより、すべてのデータがPHPの配列に必要な形式になります。
たとえば、上記で提供したサンプルデータに対してこのアルゴリズムを実行すると、次のことができるようになります。
echo $data['2']['age']; // $data['row']['column']
これは55を出力します。
または、データベースがリアルタイムで更新されていない場合(継続的にではなく、一度だけ再フォーマットしたいデータがたくさんある場合)、上記のスクリプトを拡張して、「CREATE TABLE」、「INSERT」を追加することもできます。 INTO "クエリは、基本的に、探している形式でテーブルを再作成します。
さらに、リアルタイムでデータを受信している場合でも、上記のスクリプトを記述できますが、処理時に元のテーブルから行を削除し、データが入力されるたびにスクリプトを実行するだけです。元のテーブル。