Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zwei Summen aus einer Spalte

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zwei Summen aus einer Spalte

    Hallo PHP-Gemeinde,

    mich beschäftigt ein Problem und ich brauche da wohl oder übel Hilfe. Ich habe eine Spalte in einer Tabelle, aus der ich zwei verschiedene Summen bilden will. Einmal eine Summe buydigit, bei der eine Spalte stockcount summiert wird, sofern der Wert Order in der entsprechenden gleichen Zeile 1 ist.
    Dann soll eine Summe selldigit gebildet werden aus der Spalte stockcount, sofern der Wert Order in der entsprechenden gleichen Zeile 0 ist.

    Das würde ich dann noch mit einem Group-By-versehen.
    Entsprechend sollen dann später Buydigit und Selldigit ausgegeben werden sowie eine Rechnung "Buydigit - Selldigit".

    Meine Frage ist nun: Wie stelle ich den ersten, oben beschriebenen Abschnitt an? Ich habe keine Ahnung bzw. bin mit meinem Wissen am Ende.

    Danke im Vorraus.

    Grüße
    Crossposting ist kein Verstoß, sondern der Vergleich mehrerer Lösungsvorschläge.

  • #2
    [MOD: verschoben]
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      da bauste eine einfache IF Anweisung in deine Sum() funktion ein
      also
      SUM(IF(`Order` = 1,stockcount,0))

      Kommentar


      • #4
        Hallo HPR,

        vielen Dank für deinen Tipp. An sich ganz gut, die Idee. Leider treten da zwei Komplikationen auf. Den Code habe ich wie folgt eingetippt

        PHP-Code:
        $berechnung "SELECT ex_transfer.stock_id, ex_transfer.stockprice, SUM(IF('ex_transfer.Order'=0,stockcount,1)) AS sell, SUM(IF('ex_transfer.Order'=1,stockcount,0)) AS buy ".
                  
        "FROM ex_transfer ".
                  
        "GROUP BY ex_transfer.stockprice";

        $result mysql_query($berechnung) or die(mysql_error());
        WHILE(
        $row mysql_fetch_array($result)){
                echo 
        $row['stock_id']. " / "$row['stockprice']. " / "$row['sell']. " / "$row['buy'];
                echo 
        "<br/>";
                } 
        und habe ein Problem. Bei 'Sell' wird leider alles - also jeder eintrag, der zum Preis gemäß Group-By gehört - addiert, während bei 'Buy' das Echo leer bleibt. Ich habe ein wenig getüftelt und wie man liest, bin ich wieder hier.

        Oder habe ich deinen Hinweis falsch verstanden oder gar falsch umgesetzt? Ich kann nur lernen.


        EDIT: Ich korrigiere mich, das Problem habe ich doch noch gelöst.
        Für alle, die das Problem haben sollten meine Lösung:

        PHP-Code:
        $berechnung "SELECT ex_transfer.stock_id, ex_transfer.stockprice, SUM(IF(ex_transfer.Order=0,stockcount,1)) AS sell, SUM(IF(ex_transfer.Order=1,stockcount,0)) AS buy ".
                  
        "FROM ex_transfer ".
                  
        "GROUP BY ex_transfer.stockprice";

        $result mysql_query($berechnung) or die(mysql_error());
        WHILE(
        $row mysql_fetch_array($result)){
                echo 
        $row['stock_id']. " / "$row['stockprice']. " / "$row['sell']. " / "$row['buy'];
                echo 
        "<br/>";
                } 
        Vielen Dank noch mal an HPR für den Hinweis.
        Crossposting ist kein Verstoß, sondern der Vergleich mehrerer Lösungsvorschläge.

        Kommentar


        • #5
          IF('ex_transfer.Order'=0
          was soll das auch sein? Du prüfst, ob ein String == 0 ist..

          Die Basissyntax muss man schon kennen. Ein Hochkomma ist nunmal kein Backtick, auch wenn mysql an machen Stellen da leider genügsam ist. Aber auch mit Backticks wäre diese Syntax falsch. Jeder Bezeichner muss einzeln ge„klammert“ werden.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Nun ja Ich habe mir durch einen Eigencrashkurs erst vor kurzem PHP beigebracht ohne Literatur oder so, sondern nur an Beispielen, so dass ich mir ein Wissen größtenteils ertüfteln muss. Also ein praktisches statt theoretisches Lernen. Aber zumindest habe ich den Fehler noch rechtzeitig erkannt.
            Crossposting ist kein Verstoß, sondern der Vergleich mehrerer Lösungsvorschläge.

            Kommentar

            Lädt...
            X