Verschiedene Datensätze auslesen und dabei addieren sortieren

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

  • Verschiedene Datensätze auslesen und dabei addieren sortieren

    Habe folgende Datenbankstruktur:

    id | name | kosten | datum
    1 | hans | 1.20 | 1.1.2007
    2 | peter | 3.00 | .1.2007
    3 | gabi | 2.50 | 1.1.2007
    4 | hans | 1.80 | 1.1.2007
    5 | peter | 1.50 | 1.1.2007
    6 | peter | 1.00 | 1.1.2007

    Nun befinden sich in der DB 3 verschiedene Personen. Mit folgendem Befehl kann ich ja die unterschiedlichen Personen(name) auflisten lassen.
    PHP-Code:
    SELECT DISTINCTROW name FROM gegessen 
    und hab dann folgendes Ergebnis

    id | name
    1 | hans
    2 | peter
    3 | gabi

    Nun möchte ich allerdings zusätzlich im Ergebnis auch die Addition der Kosten haben und dies auch nach höhe der Kosten sortieren lassen.

    Es sollte dann wie fogt aussehen:

    id | name | kosten
    1 | peter | 5.50
    2 | hans | 3.00
    3 | gabi | 2.50


    Kann mir einer sagen wie der SQL-Befehl hierfür aussehen müßte?

  • #2
    SELECT name, sum(kosten) FROM gegessen group by name


    was machst du aber wenn du morgen 2 peter und 3 gabi hast?
    eine person muss nicht nur durch namen, sondern durch ID identifiziert sein.
    Slava
    bituniverse.com

    Kommentar


    • #3
      hey, das bringt mich schonmal weiter.

      Mach dir mal um die 2 Peters oder 3 Gabis keine Sorgen ;-). Hab natürlich eine viel komplexere DB Struktur mit Nachnamen und Kürzel, die ich allerdings nicht vollständig aufführen wollte. Aber dennoch Danke fürs mitdenken.

      Allerdings fehlt mir jetzt noch einen Sortierung nach den höchsten Kosten. So werden mir nur die verschiedenen Datensätze unsortiert mit Gesamtkosten ausgegeben.


      SELECT name, sum(preis) FROM gegessen group by name ORDER by ?


      wird sicherlich nicht funktionieren. Daher gehe ich mal davon aus, dass der Befehl anders aussehen muss.

      Kommentar


      • #4
        ich habs :-)

        SELECT name, sum( preis ) FROM gegessen GROUP BY name ORDER BY `sum( preis )` DESC

        Kommentar


        • #5
          SELECT name, sum( preis ) Summe FROM gegessen GROUP BY name ORDER BY Summe DESC

          ist performanter, da die sum-Funktion nur ein Mal aufgerufen wird.

          Kommentar


          • #6
            hi, ich habe ein ähnliches Problem deswegen will ich keinen neues Thema starten

            So in etwa sehen die Daten aus die ich in meiner Tabelle habe:
            Lauf | Name | Punkte
            1| Peter | 3
            1| Gabi | 2
            1| Alex | 1
            2| Alex | 3
            2| Peter | 2
            2| Gabi | 1
            3| Gabi | 3
            3| Peter | 2
            3| Alex | 1

            ich möchte nun die Summe der Letzten 2 Läufe für jeden haben, da ich dass in einer foreach schleife für jeden fahrer abarbeite brauch ich das dann nur für einen Namen
            also Summe Alex = 4 (Lauf 3=1, Lauf 2=3)

            habe mir das so gedacht:
            Code:
            SELECT sum( Laufpunkte )  AS WE_Punkte
               FROM wtcc_laufe
               WHERE Fahrername =  'Peter'
               ORDER  BY Lauf DESC 
               LIMIT 2
            allerdings funktioniert das so nicht, da er ja erst die summe berechnet und dann die letzten 2 auswählt
            er soll halt erst alle Auswählen mit dem Namen, dann Nach Lauf Sortieren, dann die Letzten 2 auswählen, und über diesen 2 datensätzen die Summe bilden

            das ergebnis wäre im idealfall eine rückgabe von den letzten 2 läufen

            WE_Punkte
            4

            Gibt es da was schickes wie das in MySQL geht oder muss ich das in php machen?

            Gruß Chris
            Zuletzt geändert von DaRealMorpheus; 27.07.2010, 12:32.

            Kommentar


            • #7
              Hallo,

              es ginge zwar auch mit SQL (Subselects oder Self-Joins), aber das wäre in deinem Fall immer rechenaufwändiger als die Ermittlung der Summe in PHP.

              Gruß,

              Amica
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar

              Lädt...
              X