Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Abfrage mit Intervall

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von nicon, 10 August 2012.

  1. nicon

    nicon Neuer Benutzer

    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.
     
  2. ukulele

    ukulele Datenbank-Guru

    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
     
    PLSQL_SQL und Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden