Abfrage mit Intervall

nicon

Neuer Benutzer
Beiträge
1
Hallo zusammen.

Ich möchte gerne Daten nach einem festen Intervall ausgeben lassen. Ich möchte nur Datensätze innerhalb meiner Suchabfrage erhalten, die mindestens 10 Minuten (Feld: datum) auseinanderliegen. Datensätze dazwischen werden übersprungen. Ich habe mir bereits DATEDIFF angesehen, allerdings komme ich auf keine Lösung.

Vielleicht kann mir jemand helfen. Meine eingrenzende Abfrage sieht so aus:

PHP:
$sql = "SELECT id, datum
FROM transfer_qd
WHERE
(
datum BETWEEN '".date("Y-m-d H:i:s", $zeit)."' AND '".$ende_monat."'
)
ORDER BY datum ASC ";
 
       
$options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$res = sqlsrv_query($GLOBALS['conn'],$sql,array(),$options);

Jetzt müssten die Datensätze nur so gefiltert werden, dass nur diese vorkommen, die einen Abstand von 10 Minuten zueinander haben.

Vielen Dank im voraus.
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.582
Das Problem ist, das man sich in einem Ergebniss eines SQL Querys leider nicht einfach per Formel auf eine vorhergehende Spalte beziehen kann. Du brauchst eine Art Hierachie, in der jedes Objekt einen Nachfolger hat. Dieser Nachfolger bestimmt sich in dem man den nächsten Datensatz >= +10 Minuten wählt:

Code:
SELECT    t1.id,
        t1.datum,
        t2.id AS childid,
        t2.datum AS childdatum
FROM    transfer_qd t1,
        transfer_qd t2
WHERE    t2.id = (    SELECT    id
                    FROM    transfer_qd
                    WHERE    datum >= dateadd(mi,10,t1.datum) )
ORDER BY t1.datum ASC

Jetzt musst du dies noch in eine Spalte bringen. Du hast quasi eine Ordnerstrukur in der jeder Ordner immer nur einen Unterordner hat, die du rekursiv abarbeiten musst. Leider habe ich das noch nicht hinbekommen, aber es gibt dazu gängige Ansätze:
http://stackoverflow.com/questions/1323245/sql-recursion-without-recursion
 
Oben