[Code] [PSQL] Anzahl Datensätze um ein gegebens Datum selektieren

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Calyx, 8. November 2012 .

  1. 8. November 2012
    Zuletzt bearbeitet: 8. November 2012
    [PSQL] Anzahl Datensätze um ein gegebens Datum selektieren

    Hi,

    habe eine große Tabelle, aus der ich eine bestimmte Anzahl an Werten um ein Datum herum auswählen möchte.

    Zb. habe ich das Datum 01.01.2012. Nun sollen 75 Einträge gewählt werden, die neuer sind und 75 die älter sind, auf jeden Fall aber 150 (sofern es sie gibt), also zb auch 25/125 wenn der 01.01.2012 der 26. Eintrag ist.

    Habe mir schon das Postgres Konstrukt BETWEEN angeschaut, aber dafür brauche ich ja 2 Zeitstempel.

    Würde da nur ungern mit SELECT COUNT(*) wilde Abfragen basteln wenns auch anders geht. Kennt ihr eine bessere Lösung?
     
  2. 8. November 2012
    AW: [PSQL] Anzahl Datensätze um ein gegebens Datum selektieren

    Ich habe ehrlich gesagt meine Zweifel daran, dass du um Count oder eine vergleichbare Anweisung herum kommst. Das Ausbalancieren ist hierbei das Hauptproblem.

    Die Abfrage kann vor der Ausführung ja nicht wissen, dass es z.b. nur 25 Einträge nach dem Datum gibt und es deswegen 125 vom anderem nehmen soll.

    Würde mich sehr überraschen, wenn man das so in einer Abfrage lösen ließe.
     
    1 Person gefällt das.
  3. 9. November 2012
    AW: [PSQL] Anzahl Datensätze um ein gegebens Datum selektieren

    Allein von der Logik her musst du mit Count arbeiten, wie Alex² schon sagt woher soll er vorher wissen wieviele Einträge es vor bzw nach dem Datum gibt? Wenn du nicht die Bedingung mit 150 "garantierten" Ergebnissen hättest wäre das um einiges einfacher. Ansonsten halt count, limit, conditionals.

    /edit

    Ich weiß auch nicht was an count "wild" sein soll, du kannst alles in eine Abfrage / einen SQL packen.
     
    1 Person gefällt das.
  4. 9. November 2012
    AW: [PSQL] Anzahl Datensätze um ein gegebens Datum selektieren

    unter MySQL (Befehle musst du under PSQL probieren sollten aber vermutlich gehen) gibts LIMIT.
    Damit kann ich z.B. nur 20 Datensätze ausgeben:
    Code:
    SELECT * FROM tbl_test LIMIT 20;
    Zudem noch hier was, wie man LIMIT einsetzt wenn man eine Position hat:
    In MySQL kann man zu diesem Zweck die LIMIT-Direktive verwenden, die m Einträge ab Position s einer geordneten Tabelle anzeigt. In anderen Datenbanken muss man sich eine Zeilennummer definieren und kann dann einen Teil der Tabelle mittels einer BETWEEN-Clause auswählen.
    Code:
    # MySQL
    mysql> SELECT * FROM tabelle LIMIT [B]s,m[/B];
    Es ist nicht effizient, alle n Datensätze der Tabelle zu selektieren und dann alle Datensätze vor Position s zu überlesen.
    Quelle http://www.php-faq.de/q-mysql-seitenweise.html
     
    1 Person gefällt das.
  5. 9. November 2012
    AW: [PSQL] Anzahl Datensätze um ein gegebens Datum selektieren

    Jo danke euch, werde das glaub ich so machen, dass ich ab dem ausgewählten Datum versuche 50 hochzuzählen und falls es keine 50 waren, 50 + die Verbleibenden runter. Und dann jeweils die Zeitstempel merken und mit LIMIT die Range selektieren.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.