kostenloser Webspace werbefrei: lima-city


Meisten Datenbankeinträge mit einem Wert

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m*****z

    Wie lese ich die meisten datenbankeinträge mit einem wert aus?
    Ich habe die tag/tabelle">Tabelle Statistik und die ist sortiert nach Tage und Monate und ich möchte gerne die Spalte ausgelesen und gezählt haben, in der die meisten Einträge stehen.

    Beispiel:
    Tage:    |      Monate:
    1        |     5
    1        |     5
    1        |     5
    1        |     5
    2        |     5
    2        |     5


    Dann möchte ich gerne abgezeigt haben, dass am Tag 1 im 5. Monat 4 Einträge vorhanden sind.

    Den Befehl Count kenne ich aber wie Zähle ich nur den Höchsten.

    Vielen Dank für eure Hilfe.

    [EDIT:]
    Um es auf Anfrage noch einmal genauer zu beschreiben:
    Ich speichere die Besucherzahlen meiner User, so gibt es in der Tabelle folgende Spalten: ID, User, Tag, Monat, Time
    Mit dieser Funktion zähle ich wie viele Einträge es gesamt in der Datenbank gibt:
    mysql_query("SELECT COUNT(*) AS anzahl FROM statistik");

    Nun benötige ich einen Code in PHP, der mir den Spitzenwert eines Tages anzeigt.

    Damit lasse ich mir anzeigen, das an dem Tag 5 im 3. Monat XX User online gegangen sind:
    mysql_query("SELECT COUNT(*) AS anzahl FROM statistik where tag='5' and monat='3' ");


    Nun sind am 3.3.2011 500 User online gewesen, am 4.3.2011 sind es 455 gewesen und am 5.3.2011 sind es 501 gewesen (Bis zum heutigen Tag fortführbar). Nun möchte ich mit dynamisch anzeigen lassen, das der Spitzenwert der logins am 5.3.2011 gewesen ist und zwar mit 501 Usern. Das problem ist, dass für jeden neuen eingeloggten User ein neuer Eintrag entsteht, so sind es am 5.3.2011 501 einträge.


    Beitrag zuletzt geändert: 25.11.2011 20:11:34 von monkeyz
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallöchen,

    zuerst einmal solltest Du am besten keine drei Felder für Tag, Monat, Jahr anlegen, sondern den Unix- oder MySQL-Timestamp speichern.
    Ich benutze meist den Unix-Timestamp und speichere den in einem BIGINT-Feld.


    Du solltest separat noch eine Tabelle führen, die an jedem Tag die Zugriffe zählt. Von der kannst Du anschließend einfach den höchsten Wert ausgeben lassen.
    Mit Deiner Konfiguration wird es rechenintensiver. Du könntest die Besucherzahlen jedes Tages in ein Array laden und das nach dem höchsten Wert sortieren. Aber das ist so verdammt unsauber, dass Du es am besten wieder vergisst ;)

    Möglicherweise geht das auch mit umständlich verschlachtelten SQL-Anweisungen, aber ich finde die Variante mit der Zähltabelle bisher am naheliegendsten!

    Viele Grüße,
    F.

  4. Autor dieses Themas

    m*****z

    Nun gut das mit der seperaten Tabelle würde gehen. <-- So einfach wollte ich gar nicht denken.

    Timestamp will ich nicht nutzen, da ich jeden Tag neu zählen möchte und nicht nach 86400 Sekunden, da kann es sein, das ein user erst um 15 Uhr als neuer Tag gespeichert wird. Und es sind nur Tag und Monat^^.
    Für jeden User erstelle ich einen neuen Eintrag, da ich nicht den 1 Eintrag für den Tag auslesen möchte und die Userid parsen möchte um zu sehen, ob der user schon online war.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!