Anzeige

MySQL SUM etwas komplizierter

MySQL SUM etwas komplizierter | PSD-Tutorials.de

Erstellt von Refus, 07.02.2011.

  1. Refus

    Refus aka Noisy

    Dabei seit:
    16.03.2006
    Beiträge:
    900
    Geschlecht:
    männlich
    Ort:
    Frankfurt
    Kameratyp:
    Canon 550D
    MySQL SUM etwas komplizierter
    Ich steh grad vor einem Problem. Man könnte das ganze auch einfach über PHP mit mehreren Schleifen lösen, aber ich hoffe es geht auch einfacher (und performanter).

    Es gibt zwei Tabellen.
    Einmal 'order' in der die Transportkosten drin stehen und 'order_items' indem jeweils ein Produkt mit dem Preis und der bestellten Anzahl steht.

    Ich brauche jetzt ein einfaches Ergebnis. Und zwar soll mir in einem Zeitraum oder auch für alle Bestellungen der Gesamtbetrag ausgegeben werden. Sprich eine Berechnung muss erfolgen, Transportkosten + Produkte der Bestellung (Anzahl des Produkts + Preis).
    Leider bin ich nicht 100% fit was solche Rechnungen angeht und auch relativ gut gescheitert.
    Mein aktueller Query sieht so aus und produziert schon halbwegs was ich brauche
    Code (Text):
    1. SELECT serial, SUM(`amount` * `price_per_unit`) + shipping_costs FROM `order`, `order_items` WHERE order_items.SerialOrder = order.serial GROUP BY `SerialOrder`
    2.  
    Aktuell wird mir jetzt jede Bestellung mit Serial und Gesamtpreis angezeigt, gibt es noch eine Möglichkeit, das alles komplett zusammen zurechnen, wobei dann natürlich die Serial wegfällt.
     
    #1      
  2. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    MySQL SUM etwas komplizierter
    AW: MySQL SUM etwas komplizierter

    Könntest du bitte die Tabellenstruktur der zwei genannten Tabellen skizzieren (also die relevanten Attribute)? Jeweils ein paar Beispieldatensätze plus eine Beispielabfrage mit richtigem Ergebnis wäre auch nett.



    Duddle
     
    #2      
  3. Refus

    Refus aka Noisy

    Dabei seit:
    16.03.2006
    Beiträge:
    900
    Geschlecht:
    männlich
    Ort:
    Frankfurt
    Kameratyp:
    Canon 550D
    MySQL SUM etwas komplizierter
    AW: MySQL SUM etwas komplizierter

    Klar, ich hab das ganze noch etwas modifiziert mit einer Datumsabfrage, damit man den Gesamtgewinn in einer Zeitspanne ansehen kann.
    order:
    Code (Text):
    1.  
    2. serial  paypal_id   date    street  zip_code    city    state   country     name    surname     email   transaction_id  shipping_costs  dhl_tracking    dhl_cancel  packed  shipped
    3.  
    order_items:
    Code (Text):
    1. id  SerialOrder     productcode     amount  price_per_unit
    Neue Abfrage.
    Code (Text):
    1. SELECT `serial`, `date`,
    2.  SUM(`amount` * `price_per_unit`) + `shipping_costs` FROM `order`,
    3. `order_items` WHERE `SerialOrder` = `serial` AND `date` BETWEEN
    4. '2011-01-08 00:00:00' AND '2011-01-11 00:00:00' GROUP BY `SerialOrder`
    Ergbnis:
    Code (Text):
    1.  
    2. serial        | date                | SUM(`amount` * `price_per_unit`) + `shipping_costs`
    3. 2011010900030   2011-01-09 18:02:50     2.90
    4. 2011010900031   2011-01-09 18:21:04     3.00
    5. 2011010900032   2011-01-09 19:20:08     3.00
    6.  
     
    #3      
  4. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    MySQL SUM etwas komplizierter
    AW: MySQL SUM etwas komplizierter

    Ist das Ergebnis denn das, was du willst? Für mich sieht das nach einer Lösung aus, aber es wird aus dem Beispiel nicht deutlich.



    Duddle
     
    #4      
  5. Refus

    Refus aka Noisy

    Dabei seit:
    16.03.2006
    Beiträge:
    900
    Geschlecht:
    männlich
    Ort:
    Frankfurt
    Kameratyp:
    Canon 550D
    MySQL SUM etwas komplizierter
    AW: MySQL SUM etwas komplizierter

    Sagen wir mal so, ich kann mit dem Ergebnis leben, müsste es nur weiter verarbeiten.
    Aber gäbe es auch eine Möglichkeit Alle Ergebnisse von SUM nochmals zu summieren. Damit hätte ich am Ende dann quasi noch einen Wert übrig, der mir die Gesamteinnahmen aus einem gewissen Zeitraum präsentiert.
     
    #5      
  6. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    MySQL SUM etwas komplizierter
    AW: MySQL SUM etwas komplizierter

    In SQL ist jedes Zwischenergebnis wieder eine Relation/Tabelle.

    Code (Text):
    1.  
    2. SELECT SUM(`teilsumme`)
    3. FROM (SELECT `serial`, `date`,
    4.        SUM(`amount` * `price_per_unit`) + `shipping_costs` FROM `order`AS `teilsumme`,
    5.       `order_items` WHERE `SerialOrder` = `serial` AND `date` BETWEEN
    6.       '2011-01-08 00:00:00' AND '2011-01-11 00:00:00' GROUP BY `SerialOrder`)
    7.  
    Sollte so funktionieren.


    Duddle
     
    #6      
x
×
×