Thema: Delphi SQL abfrgae First 3

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: SQL abfrgae First 3

  Alt 15. Jul 2016, 11:13
Also in einem normalen SELECT wirds glaube ich echt knifflig aber es gibt ja Execute-Blöcke:
Code:
EXECUTE BLOCK
RETURNS (user_id int, zeit1 timestamp, zeit2 timestamp, minbetween int, first3 int)
As
BEGIN
    FOR
        SELECT DISTINCT
            tabelle.user_id
        FROM tabelle
        INTO :user_id
    DO
    BEGIN
        FOR
            SELECT FIRST 3
                tabelle.zeit1,
                tabelle.zeit2,
                tabelle.minbetween,
                tabelle.first3
            FROM tabelle
            WHERE tabelle.user_id = :user_id
            ORDER BY tabelle.minbetween DESC
            INTO :zeit1, :zeit2, :minbetween, :first3
        DO
        BEGIN
            SUSPEND;
        END
    END
END
EDIT: Mein Code gibt jetzt nur die entsprechenden Datensätze zurück. Statt dem Suspend in der Schleife kannst du natürlich auch die 3 Datensätze Updaten und in first3 eine 1 schreiben.
EDIT2: Wobei das Feld First3 schon so aussieht als sollte es gar nicht existieren. Sobald du einen neuen Datensatz einfügst musst du ja alle first3-Felder aktualisieren, weil sich ja was geändert haben könnte.
Bist du sicher dass du dieses Feld brauchst? Auch das Feld minbetween ist so gesehen nicht notwendig weil sich minbetween wie du schon sagtest aus zeit1 und zeit2 ergibt.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (15. Jul 2016 um 11:19 Uhr)
  Mit Zitat antworten Zitat