Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » PHP » [mySQL] differenz zwischen 2 rows als neue spalte

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.04.2011, 08:30 Uhr
~global
Gast


Hi,

ich suche ner möglichkeit den unterschied zweier "rows" darzustellen.
ich hab eine datetime spalte, nun will ich diese tabelle so abfragen das ich als ergebnis immer den unterschied (zb in sec) von einer row zur nächsten bekomme
also:
row1 - 14:12:34
row2 - 14:13:05
row3 - 14:13:26
...

ergebniss soll dann sein:
row1 - 31 (oder 00:00:31)
row2 - 21
...

ist das irgendwie möglich?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.04.2011, 19:05 Uhr
0xdeadbeef
Gott
(Operator)


In PostgreSQL getestet:

Code:
CREATE TABLE tabelle ( num NUMERIC, val NUMERIC );

INSERT INTO tabelle VALUES ( 1, 10 );
INSERT INTO tabelle VALUES ( 2, 12 );
INSERT INTO tabelle VALUES ( 3, 32 );
INSERT INTO tabelle VALUES ( 4, 67 );

SELECT t1.num, t1.val - t2.val AS diff FROM tabelle AS t1 LEFT JOIN tabelle as t2 ON t1.num = t2.num + 1;

num | diff
-----+------
   1 |    
   2 |    2
   3 |   20
   4 |   35
(4 Zeilen)


In MySQL sollte das prinzipiell genau so gehen. Ich bin nicht sicher, ob MySQL den NUMERIC-Datentyp kennt, aber du willst ja eh andere Typen benutzen.

Wenn Addition der Schlüssel nicht möglich ist oder Lücken bestehen, sollte

Code:
SELECT DISTINCT ON(t1.num) t1.num, t2.val - t1.val AS diff FROM tabelle AS t1 CROSS JOIN tabelle AS t2 WHERE t2.num > t1.num ORDER BY t1.num, t2.num ASC;


funktionieren.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 18.04.2011 um 19:19 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.04.2011, 17:06 Uhr
~global
Gast


addition der schlüssel ist nicht möglich (wegen lücken)

mit nem DISTINCT hatte ich schon versucht, aber da dauert die abfrage ewig (bzw wird nicht fertig)
werd ich wohl um ne temptable nicht herum kommen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.04.2011, 19:55 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn se ewig dauert würd ich vermuten das deine tabellen indezes etc nicht sinnvoll gewählt sind
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.04.2011, 17:08 Uhr
~global
Gast


nee, die indizes waren ok (int) es lag nur daran das die tabelle s**** lang war (ca 45000 zeilen)

das distinct ist wirklich überflüssig, denn die lücken in den id's sind wirklich kein problem
habe es jetzt so gelöst:

Code:
SELECT t1.nID, t2.nID, TIMEDIFF(t2.dtDateTime,t1.dtDateTime)AS nGap FROM ( dat_status as t1 LEFT JOIN dat_status AS t2 ON( t2.nID=t1.nID+1 ) ) WHERE t2.nID IS NOT NULL;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ PHP ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: