![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() huhu leute!
ich hab da ein kleines problem, mit dem ich nicht zurecht komme, und hoffe auf eure hilfe. ich habe eine tabelle, in der stehen u.a. die folgenden felder: - id - userid - startdate als int (unix-timestamp) - enddate als int (unix-timestamp) zu einer person werden zeiten erfasst, d.h. von wann bis wann sie eingeloggt war bzw. ist. wenn sie gerade eingeloggt ist, befindet sich im letzten eintrag bei enddate ein NULL-wert. jetzt will ich mit einem query rausfinden, was der letzte eingetragene datensatz ist, d.h. jener mit dem grössten startdate-timestamp und den dazu korresponierenden enddate-timestamp. das problem ist, dass letzterer auch NULL sein kann (wenn der user eben noch eingeloggt ist). ich hoffe, ich habe das problem halbwegs verständlich beschrieben und dass mir jemand helfen kann. danke im voraus ![]() |
![]() |
![]() |
![]() |
#2 |
Master
![]() |
![]() Hallo!
Warum machst Du nicht ein SELECT MAX auf die Startdate? Wenn NULL drinnensteht kannst Du ja nen String á la "Ist noch angemeldet" ausgeben, oder versteh ich Dich falsch? LG Jörg |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 05.06.2001
Alter: 51
Beiträge: 259
|
![]() wenn ich das ganze richtig verstanden hab, könnte die abfrage so aussehen:
select id from tabelle order by startdate desc limit 0,1 = sortiert die tabelle absteigend noch startdate und gibt dir die id des datensatzes
____________________________________
lg, thx usw. dreamer |
![]() |
![]() |
![]() |
#4 | |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Zitat:
![]() ![]() ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
|
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() Und was ist das Problem bei der Abfrage?
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#6 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() ok, ich versuchs nochmal:
in der tabelle stehen von vielen usern jeweils viele login-daten. ich will zu jeder person den zugehörigen letzten record ausfindig machen (kein problem mit max(startdate) und group by personid). jedoch bräuchte ich dann zum startdate das zugehörige enddate und nicht irgendeines, sondern eben jenes das bei dem maximalen startdate drinnen steht. weil wenn dieses enddate NULL ist, dann weiss ich ob der user angeloggt ist oder nicht. z.b. select personid, max(startdate), enddate from table group by personid es soll dabei rauskommen: person 1 mit letztem login um xxx und logout um xxx (oder eben NULL) |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() ja und? kommt das nicht raus?
Was ist Dein Problem?
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#8 | |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() Zitat:
also z.b. ... person 1 startdate 1 enddate 1 person 1 startdate 2 enddate 2 person 1 startdate 3 enddate 3 (letzter eintrag person 1) ... weitere personen ... der query liefert als ergebnis: person 1 startdate 3 enddate 1 (!!!) ich will aber enddate 3 |
|
![]() |
![]() |
![]() |
#9 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() Code:
select personid, max(startdate), enddate from table where personid = BENUTZERID_DES_AKTUELLEN_BENUTZERS; ![]()
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#10 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() vielen dank für deine antwort _m3!
leider funktioniert dein vorschlag mal prinzipiell nicht, weil eine aggregatsfunktion wie max nur in einem select mit gruppierung vorkommen darf, wenn noch andere feldwerte ausgelesen werden. zudem würde ich eine übersicht über alle personen benötigen, in dem sinn: personid - letztes einlogdatum - dazugehöriges auslogatum personid - letztes einlogdatum - dazugehöriges auslogatum personid - letztes einlogdatum - dazugehöriges auslogatum ... |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|