Ich sehe keine Möglichkeit, Sie können nur einige ausgefallene SELECT-Abfrage schreiben, um zu bekommen, was Sie wollen. Du wirst einige Vorverarbeitungen machen müssen.
Sie haben aus einer Art von Programm, das diese MySQL-Abfrage zu der Ausführung, Anwendung, Skript, usw. nicht sicher, was die Sprache ist, aber hier ist, was ich in PHP tun würde:
/* $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;
}
}
}
Dadurch werden alle Daten in einem Format in einem Array in PHP abgelegt.
Zum Beispiel nach diesem Algorithmus auf den Beispieldaten laufen Sie oben vorgesehen ist, würden Sie in der Lage zu tun:
echo $data['2']['age']; // $data['row']['column']
Welche würde Ausgabe 55.
ODER wenn Ihre Datenbank wird nicht in Echtzeit aktualisiert (Sie haben eine Reihe von Daten, die Sie einmal anstatt kontinuierlich neu formatieren möchten). Sie können das obige Skript so erweitern, dass auch "CREATE TABLE", "INSERT INTO" Anfragen tha t im Grunde erstellen Sie die Tabelle in dem Format, das Sie suchen.
Wenn Sie Daten in Echtzeit empfangen, können Sie weiterhin das oben beschriebene Skript schreiben, aber Sie möchten nur die Zeilen aus der ursprünglichen Tabelle entfernen, während Sie sie verarbeitet haben, und dann das Skript nur bei Daten ausführen wird in die ursprüngliche Tabelle eingefügt.
Wie wollen Sie * eine Ergebnismenge mit unbekannten Spalten * verwenden? – SingleNegationElimination
Lieber Gott, ist das ein ... META DB ??? (böse Musik: ta ta taaaaaaa) –
@Adrian Ich liebe Meta-Datenbanken :) – Kermit