4 messages in com.mysql.lists.mysql-deRe: Messwert-Auswertung| From | Sent On | Attachments |
|---|---|---|
| Rene Fertig | 12 Feb 2006 09:17 | |
| oli....@bluewin.ch | 14 Feb 2006 00:13 | |
| Rene Fertig | 14 Feb 2006 00:44 | |
| Hans Meier (John Doe) | 14 Feb 2006 03:20 |
| Subject: | Re: Messwert-Auswertung![]() |
|---|---|
| From: | Hans Meier (John Doe) (secu...@tele2.ch) |
| Date: | 02/14/2006 03:20:07 AM |
| List: | com.mysql.lists.mysql-de |
Rene Fertig am Dienstag, 14. Februar 2006 09.45:
Hallo Oli.
Am Dienstag, 14. Februar 2006 09:13 schrieb oli....@bluewin.ch:
Ist es möglich am DB-Design Änderungen vorzunehmen? Wäre wahrscheinlich am besten. z.B. pro Sensor eine Tabelle oder pro Messreihe einen Record.
Das wäre in der Tat einfacher, aber leider nicht möglich. Die Anzahl der Sensoren muss flexibel sein. Es ist sogar so, das im Laufe der Zeit Sensoren hinzukommen und andere wegfallen. Die Messzeiten sind allerdings bei allen gleich, die Werte sollen schließlich zur gleichen Zeit verglichen werden können.
Mittlerweile habe ich eine Lösung über PHP. Aber eine reine SQL-Lösung wäre mir schon lieber.
Hallo René
Der Vollständigkeit halber hier noch ein perl script, das die gewünschte Ausgabe liefert. Es könnte auch nur dazu verwendet werden, das dynamische select statement auf stdout auszugeben um es an mysql zu füttern.
Weiss jemand, ob sich das select statement in einer stored function bauen lässt? Habe dazu nichts gefunden auf dev.mysql.com, bin aber auch kein mysql-Fachmann.
=== #!/usr/bin/perl use strict; use warnings;
# without error checking, locking, layouting and such...
use DBI; my $dbh=DBI->connect("DBI:mysql:test:localhost:3306",'USERNAME','PASSWORD', {RaiseError=>1, AutoCommit=>1});
# get sensor numbers # my $out=$dbh->prepare('select distinct sensor from mw'); $out->execute(); my $data=$out->fetchall_arrayref(); my @sensors=map $_->[0], @$data;
# build select statment and execute it # my $stmt=' select time as t1, ' . (join ',', map "(select wert from mw where sensor=$_ and time=t1) as s$_", @sensors) .' from mw group by t1;'; $out=$dbh->prepare($stmt); $out->execute();
# print results # print join '|', @{$out->{NAME}}, "\n"; while (my $row=$out->fetchrow_arrayref) { print join '|', @$row, "\n"; } ===
Grüsse Hans




