eXma » Handeln » Arbeitsmarkt
Startseite - Veranstaltungen - Mitglieder - Suche
Vollständige Version anzeigen: [suche] klugen Kopf
bartman121
Mahlzeit,

brauche mal einen klugen Kopf der mir bei einem Problem behilflich sein kann

habe eine Tabelle, die Messwerte verschiedener Messtellen enthält

also
Messtellen_ID, timestamp, messwert

brauche eine Datenbankabfrage die mir folgendes liefert:
CODE

                            Messtellen_ID(1)            Messtellen_ID(2)
timestamp              messwert(1)                  messwert(2)

Also ne Kreuztabelle....

idealerweise sollte man für jede messstellen_ID (einzeln!) den timestamp noch manipulieren können indem man Stunden addiert/subtrahiert

Hinten dran müssen dann noch nen paar andere Joins und so gebaut werden ...

Wenn jemand Interesse und know-how hat, dann gerne melden ...

Ich stelle mal 2 Kisten bier bzw. das ganze als echtes Geld als Belohnung in Aussicht.





aktsizr
versteh noch nicht so ganz was du eigentlich willst.. du willst jeweils 2 messwerte mit gleichen timestamp einer tabelle anzeigen? join condition a.timestamp = b.timestamp?
bartman121
joar, ich bin halt nur zu pläd nen query zu bauen mit dem ich nen join auf die gleiche tabelle machen kann ...

ich brauch irgendwie das hier:

select ('timestamp+$hier evetuelle manipulation') as 'timestamp', messwert as '$id1' from messwerte AS T1 where messstellen_id='$id1'

select ('timestamp+$hier evetuelle manipulation')as 'timestamp', messwert as '$id2' from messwerte AS T2 where messstellen_id='$id2'

... $id3 ....

... $id4 ....

....

... $id_n ....

das ganze mus ich irgendwie joinen aber ich bin zu doof dem server das zu erklären, dass mich seine drecks Fehlermeldungen nicht interessieren ...
(Prozeduren und Views koennen nicht angelegt werden!)

Das ganze muss ziemlich variabel gebaut werden, da die Abfrage später durch ein Programm generiert werden soll .... da hängen noch einige andere joins mit dran ...

Ist das irgendwie verständlich?
aktsizr
mysql> select * from test;
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2011-03-12 15:45:52 | 5 |
| 2 | 2011-03-12 15:45:52 | 5 |
| 3 | 2011-03-12 15:46:01 | 5 |
| 4 | 2011-03-12 15:46:06 | 5 |
| 5 | 2011-03-12 15:46:06 | 7 |
| 6 | 2011-03-12 15:46:11 | 3 |
| 7 | 2011-03-12 15:46:11 | 9 |
| 8 | 2011-03-12 15:46:17 | 2 |
| 9 | 2011-03-12 15:46:17 | 0 |
+----+---------------------+-------+
9 rows in set (0.00 sec)

mysql> select a.ts as timestamp, a.value as 'messwert1', b.value as 'messwert2' from test a cross join test b on (a.ts = b.ts);
+---------------------+-----------+-----------+
| timestamp | messwert1 | messwert2 |
+---------------------+-----------+-----------+
| 2011-03-12 15:45:52 | 5 | 5 |
| 2011-03-12 15:45:52 | 5 | 5 |
| 2011-03-12 15:45:52 | 5 | 5 |
| 2011-03-12 15:45:52 | 5 | 5 |
| 2011-03-12 15:46:01 | 5 | 5 |
| 2011-03-12 15:46:06 | 5 | 5 |
| 2011-03-12 15:46:06 | 7 | 5 |
| 2011-03-12 15:46:06 | 5 | 7 |
| 2011-03-12 15:46:06 | 7 | 7 |
| 2011-03-12 15:46:11 | 3 | 3 |
| 2011-03-12 15:46:11 | 9 | 3 |
| 2011-03-12 15:46:11 | 3 | 9 |
| 2011-03-12 15:46:11 | 9 | 9 |
| 2011-03-12 15:46:17 | 2 | 2 |
| 2011-03-12 15:46:17 | 0 | 2 |
| 2011-03-12 15:46:17 | 2 | 0 |
| 2011-03-12 15:46:17 | 0 | 0 |
+---------------------+-----------+-----------+
17 rows in set (0.00 sec)

mysql> select distinct a.ts as timestamp, a.value as 'messwert1', b.value as 'messwert2' from test a cross join test b on (a.ts = b.ts);
+---------------------+-----------+-----------+
| timestamp | messwert1 | messwert2 |
+---------------------+-----------+-----------+
| 2011-03-12 15:45:52 | 5 | 5 |
| 2011-03-12 15:46:01 | 5 | 5 |
| 2011-03-12 15:46:06 | 5 | 5 |
| 2011-03-12 15:46:06 | 7 | 5 |
| 2011-03-12 15:46:06 | 5 | 7 |
| 2011-03-12 15:46:06 | 7 | 7 |
| 2011-03-12 15:46:11 | 3 | 3 |
| 2011-03-12 15:46:11 | 9 | 3 |
| 2011-03-12 15:46:11 | 3 | 9 |
| 2011-03-12 15:46:11 | 9 | 9 |
| 2011-03-12 15:46:17 | 2 | 2 |
| 2011-03-12 15:46:17 | 0 | 2 |
| 2011-03-12 15:46:17 | 2 | 0 |
| 2011-03-12 15:46:17 | 0 | 0 |
+---------------------+-----------+-----------+
14 rows in set (0.00 sec)

mysql> select distinct a.ts as timestamp, a.value as 'messwert1', b.value as 'messwert2' from test a cross join test b on (a.ts = b.ts) where a.id <> b.id;
+---------------------+-----------+-----------+
| timestamp | messwert1 | messwert2 |
+---------------------+-----------+-----------+
| 2011-03-12 15:45:52 | 5 | 5 |
| 2011-03-12 15:46:06 | 7 | 5 |
| 2011-03-12 15:46:06 | 5 | 7 |
| 2011-03-12 15:46:11 | 9 | 3 |
| 2011-03-12 15:46:11 | 3 | 9 |
| 2011-03-12 15:46:17 | 0 | 2 |
| 2011-03-12 15:46:17 | 2 | 0 |
+---------------------+-----------+-----------+
7 rows in set (0.00 sec)

So? Wobei das Distinct vielleicht mit etwas Vorsicht zu geniessen wäre. Außerdem hast du Informationsverlust, wenn es zu einer Timestamp keine andere Timestamp gibt. Wenn die trotzdem angezeigt werden sollen, muss ein OUTER JOIN verwendet werden.
bartman121
*staun* shocking.gif

genau das ist die Lösung die ich brauchte....

da hängt jetzt noch einiges mit dran ... wenn du bereit bist mir das zeug alles zu bauen, was ich brauche (Erklärung sollte man persönlich machen), dann kriegste deine Belohnung

aktsizr hat vorrang, wenn er nicht will, dann darf jemand anderes smile.gif

aktsizr
hmmmm... ich dachte ich krieg das bier nur für das (immernoch unzulängliche aber leicht zu fixende) sql an sich?
bartman121
Zitat(aktsizr @ 12 Mar 2011, 16:26)
hmmmm... ich dachte ich krieg das bier nur für das (immernoch unzulängliche aber leicht zu fixende) sql an sich?
*


Zitat(erstes post)
Hinten dran müssen dann noch nen paar andere Joins und so gebaut werden ...


.oO