MySQL abfrage Gruppiert ....

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL abfrage Gruppiert ....

    Hallo allerseits,
    ich hoffe das ich hier im richtigen Bereich Poste, wenn nicht bitte ich um Nachsicht und um Verschiebung. Danke.

    Also, ich möchte gern, meine DB abfragen, Gruppiert nach 'Datum' und Summe 'id'
    Zumindest denke ich das es so ist
    Ich möchte als Ausgabe, den Verbrauch pro Tag.


    Die DB sieht so aus:

    id | datumzeit | GZStand
    1 | 2013-01-05 19:43:11 | 9002.96
    2 | 2013-01-05 19:51:02 | 9002.97
    3 | 2013-01-05 19:55:45 | 9002.98
    4 | 2013-01-05 20:01:42 | 9002.99
    5 | 2013-01-06 02:33:12 | 9003.00
    6 | 2013-01-06 04:17:32 | 9003.01

    Wenn ich das richtig verstanden habe, muss ich alle Einträge mit dem selben Datum Gruppieren und dann die 'id´s' Summieren, oder ?

    PHP-Code:
    SELECT idDATE_FORMAT(datumzeit,'%Y.%m.%d') AS DATUMDATE_FORMAT(datumzeit,'%H:%i:%s') AS ZEITGZStand 
    FROM Gas 
    WHERE 
    <-- ???
    GROUP BY DATE_FORMAT(datumzeit'%Y-%m-%d %H:%i:%s'
    ORDER BY datumzeit ASC 
    Das ist mein Ansatzt, aber ich weiß nicht wie die WHERE regel aus sehen muss

    Ich weiß nicht mal ob der Ansatz der richtige ist, habe von MySQL sehr wenig bis gar keine Ahnung.
    Kann jemand einem Anfänger Helfen ?

    Vielen Dank

    Gruß
    Stefan

  • #2
    Hi,
    ok habe es hinbekommen

    Aber eine Frage habe ich noch, warum bekomme ich nur eine Ausgabe, wenn die '}'
    am Ende steht und nicht vor dem 'echo' ?

    Vielleicht zum besseren Verständnis, so funktioniert es:
    PHP-Code:
    <?php
    include("db-config.php");
    $tag "
    SELECT id, count(datumzeit) as Summe_Gas
    FROM Gas
    GROUP BY DATE_FORMAT(datumzeit, '%Y-%m-%d') 
    ORDER BY Summe_Gas DESC"
    ;

    $result mysql_query($tag) OR die(mysql_error()); 

    $temp_id 0;

    while (
    $array=mysql_fetch_array($result)) {  
        
    $temp_id $array[1];

    $i++;

    $gesamt $temp_id*0.01;

    echo 
    $gesamt;
    echo 
    '<br>';
    }
    ?>
    Aber so bekomme ich nur "Eine" Zahl als Ausgabe :
    PHP-Code:
    <?php
    include("db-config.php");
    $tag "
    SELECT id, count(datumzeit) as Summe_Gas
    FROM Gas
    GROUP BY DATE_FORMAT(datumzeit, '%Y-%m-%d') 
    ORDER BY Summe_Gas DESC"
    ;

    $result mysql_query($tag) OR die(mysql_error()); 

    $temp_id 0;

    while (
    $array=mysql_fetch_array($result)) {  
        
    $temp_id $array[1];

    $i++;
    }

    $gesamt $temp_id*0.01;

    echo 
    $gesamt;
    echo 
    '<br>';
    ?>
    Ich möchte gern die Ausgabe '$gesamt' gerne weiterverarbeiten, das geht aber nicht,
    wenn die '}' am Ende steht.

    Ich hoffe ihr versteht was ich meine
    Kann mir bitte jemand Helfen und sagen woran das liegt und wie ich das ändern muss?

    Vielen Dank

    Gruß
    Stefan

    Kommentar


    • #3
      Zitat von Cetax Beitrag anzeigen
      Ich möchte gern die Ausgabe '$gesamt' gerne weiterverarbeiten, das geht aber nicht,
      wenn die '}' am Ende steht.
      $gesamt wird bei jedem Schleifendurchlauf überschrieben, bzw. bei jedem Durchlauf mit einem neuen Wert belegt. Innerhalb der Schleife erfolgt die Ausgabe mit echo bei jedem einzelnen Durchlauf. Die Ausgabe mit echo außerhalb der Schleife wird aber erst ausgeführt, nachdem die Schleife bereits abgearbeitet wurde und nur noch mit dem Wert vom letzten Durchlauf belegt ist.
      Du könntest aber die Ergebnisse in einem Array schreiben und den Array außerhalb der Schleife weiterverarbeiten.
      PHP-Code:
      ...

      $i++;

      $gesamt[] = $temp_id*0.01;

      // Ende der Schleife


      foreach ($gesamt as $ausgabe) {

          echo 
      $ausgabe."<br>\n";

      Eine andere Möglichkeit bestünde darin die Ergebnisse mit einem Punktoperator und = zu verknüpfen. Kommt aber auf den Verwendungszweck an. Die Variable $gesamt sollte dann bereits vor der Schleife deklariert und definiert werden.
      PHP-Code:
        $gesamt "";  // Bekanntmachung vor der Schleife
      ...
      $i++;

      $gesamt .= $temp_id*0.01;

      // Ende der Schleife


      echo $gesamt
      In Deinem Beispiel dürfte wohl $gesamt[] besser geeignet sein.

      Kommentar


      • #4
        [gelöst]

        Hallo Melewo,
        vielen Dank, das ist wirklich KLasse

        Es klappt, mein ganzer Code sieht so aus (falls es nochmal jemand braucht) :
        PHP-Code:
        <?php
        include("db-config.php");

        $sql "
        SELECT id, DATE_FORMAT(datumzeit,'%Y.%m.%d') AS DATUM, DATE_FORMAT(datumzeit,'%H:%i:%s') AS ZEIT, GZStand 
        FROM Gas 
        WHERE `datumzeit` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
        GROUP BY DATE_FORMAT(datumzeit, '%Y-%m-%d %H:%i:%s') 
        ORDER BY datumzeit ASC"
        ;

        $result mysql_query($sql) OR die(mysql_error()); 

        while (
        $array=mysql_fetch_array($result)) {  
             
        $id[$i] = $array[0]; 

        $i++;

        }
        $gesamt $i*0.01;

        echo 
        $gesamt;
        ?>
        Also nochmal Vielen Dank für die tolle Hilfe


        Gruß
        C3tax

        Kommentar

        Lädt...
        X