Autor Beitrag
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 05.08.14 11:45 
Hi,
ich habe eine kurze Frage:
ich benutze mysql mit ungefähr folgender Spalten-Struktur:
ausblenden Quelltext
1:
2:
 A || B || C || Timestamp
...

und mache dann folgende abfrage:
ausblenden Quelltext
1:
SELECT COUNT(*) AS `Datensätze`, `A`, Timestamp FROM `table` GROUP BY `A` ORDER BY `Timestamp`					


Durch das GROUP BY werden ja die Ergebniszeilen zusammengefasst. Wie kann ich jetzt aber nach dem jeweils aktuellstem Timestamp pro Gruppe sortieren? Oder sagen wir nach dem ältestem?

Edit: Und dazu noch eine weitere Frage:
Ich brauche ein Select, welches eine (gegebene) Anzahl an fortlaufenden Ints zurückgibt, ohne dass Daten zugrundeliegen. Ich könnte natürlich eine beliebige Tabelle nehmen und die zeilennummern verwenden, hätte das aber gerne ohne tabelle. Ich weiss dass ich so etwas benutzen könnte:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        SELECT
            counter
        FROM
            (
                SELECT
                    @counter := @counter +1 AS counter
                FROM
                    (SELECT @counter :=0) AS vars,
                    (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS d1,
                    (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS d2,
                    (SELECT 1 UNION SELECT 2 UNION SELECT 3) AS d3,
                    (SELECT 1 UNION SELECT 2 UNION SELECT 3) AS d4,
                    (SELECT 1 UNION SELECT 2 UNION SELECT 3) AS d5
            ) AS t LIMIT 0, 100

Ich kann da zwar das mittels dem Limit flexibel halten, muss aber trotzdem vorher die maximalzahl wissen und halte das auch nicht für sonderlich elegant. geht das nicht irgendwie besser?

Ich hoffe ihr könnt meinen Verwirrungen folgen :o
lg Boldar
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 05.08.14 14:22 
Das sollte mit MIN() bzw. MAX() machbar sein:

ausblenden SQL-Anweisung
1:
SELECT COUNT(*) AS `Datensätze`, `A`, MIN(TimestampAS min_timestamp, MAX(Timestampas max_timestamp FROM `tableGROUP BY `A`					


Für das 2. Problem könnstet Du z.B. eine Stored procedure erstellen die als Schleife die Ints zurück gibt.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Boldar
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 05.08.14 15:00 
Ich frage mich gerade beim Zweiten, wofür das gut sein soll.

Kann es sein, dass du da den Datenbank-Server mehr machen lässt, als er eigentlich sollte?
Aus Erfahrung kann ich dir nur raten, so wenig wie möglich vom Server machen zu lassen, außer es bietet tatsächlich ausreichend Vorteile, wie z.B. einen deutlich spürbaren Performance-Vorteil.

Was SQL angeht, erstelle ich nur das Datenbank-Schema, alle Abfragen erstellt das Entity Framework.
Ich weiß nicht, ob es das auch für Delphi und MySQL gibt, aber ich würde glatt meinen Hintern darauf verwetten, dass es irgendeinen anderen guten OR-Mapper gibt. :D
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 05.08.14 15:03 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
Ich weiß nicht, ob es das auch für Delphi und MySQL gibt, aber ich würde glatt meinen Hintern darauf verwetten, dass es irgendeinen anderen guten OR-Mapper gibt. :D


Es gibt Persistenzframeworks (z.B. TMS Aurelius, oder was von Devart). Aber wirklich verbreitet ist die Benutzung wohl nicht. Ich stand vor kurzem selbst vor der Entscheidung bei einem neuen Projekt ein solches Persistenzframework einzusetzen. Da ich allerdings niemanden gefunden habe, der konkret im Echtbetrieb mit einem dieser Frameworks Erfahrungen hat (also nicht nach dem Motto "ja, hab ich schon mal mit rumgespielt), hab ich mich nicht getraut.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Boldar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 05.08.14 17:52 
Vielen Dank, Nersgatt, ich habs jetzt beides hinbekommen.
Mir ist klar, dass das nicht so ideal ist. Es ging mir aber ausdrücklich um einen schnellen Würgaround. Zudem hat mein Problem (momentan noch) nichts mit Delphi zu tun. Hätte das dann in Offtopic gemusst? Dachte Datenbanken passt trotzdem.
lg und Danke,
Boldar