Antworten auf deine Fragen:
Neues Thema erstellen

SQL Abfrage

AxelM

Nicht mehr ganz neu hier

Hallo,
ich habe in einer Tabelle folgendes gespeichert:
user_id (BIGINT) //Benutzer id
ts (BIGINT) // Unix Timestamp aus time()
typ (TINYINT) // 1 für "rein" und 0 für "raus"

was ich brauche sind nun alle Zeitspannen zwischen typ = 1 und dem nächsten typ = 1 nach Sortierung ts ASC.
Am liebsten wäre mir folgende Rückgabe:
user_id, ts des in , Zeitspanne in Sekunden

Geht sowas per SQL? falls ja, wie?

Danke schonmal für eure Antworten.
 

Duddle

Posting-Frequenz: 14µHz

Hab mal ein bisschen rumgespielt und ein Zwischenergebnis hinbekommen, dass wohl den schwierigeren Teil löst. http://sqlfiddle.com/#!9/298602/3

Man braucht dazu eine zusätzliche, eindeutige id, dann kann per GROUP BY aus einer Menge an Zeitspannen jeweils die kleinste rausgepickt werden.


Duddle
 

p3t6

Noch nicht viel geschrieben

Hallo. ZUerst einmal eine Frage, warum nimmst du für einen UNIX Timestamp ein bigint Feld? Woe wäre es mit Timestamp?
 
J

JHotography

Guest

Ich meine, das müsste mit einem JOIN auf die gleiche Tabelle funktionieren, in etwa so:

SELECT tab1.user__id, tab1.ts, tab2.ts - tab1.ts
FROM tabelle AS tab1, tabelle AS tab2
WHERE tab2.user__id = tab1.user__id
AND tab2.typ = 1
AND tab2.ts =
(SELECT min(ts) FROM tabelle WHERE user__id = tab1.user_id AND typ = 1 AND ts > tab1.ts)

Das ist zugegebenermaßen zwar nicht besonders performant, sollte aber ohne weitere Modifikationen der Tabellenstruktur funktionieren, wenn ich mich nicht irre?

Liebe Grüße

Jens
 

msa1989

Bin da

Hallo @AxelM

um welche Datenbank handelt es sich denn? Weil wenn es z.B. SQL Server oder postgreSQL ist, gibt es sogenannte "Window Functions". Damit kann das direkt in einer Zeile berechnet werden. MySQL kennt allerdings meines Wisssens nach keine Window Functions.
Die Methode von Jens sollte auf jeden Fall funktionieren (Code nicht nachgeprüft) liefert aber wie er schreibt nicht die beste Performance. Aber ich gehe jetzt mal davon aus, dass du das für eine kleine Datenbanken brauchst (< 500 MB?). Dann hast du vermutlich sowieso keine Probleme mit der Performance und genügend Kapazität übrig.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.634
Beiträge
1.538.448
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben