Ankündigung

Einklappen
Keine Ankündigung bisher.

SUM aus zwei Spalten addieren

Einklappen

Neue Werbung 2019

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

  • hsg32
    hat ein Thema erstellt SUM aus zwei Spalten addieren.

    SUM aus zwei Spalten addieren

    Hallo zusammen,
    ich übe gerade am aktuellen WM-Beispiel SQL und bin da auf ein Problem gestoßen.

    Ich möchte die Gesamtpunkte ermitteln.
    Dazu addiere ich zwei SELECTs, was auch teilweise funktioniert, nur einige Spiele, die sehrwohl Punkte erreicht haben (auch Deutschland ) werden nicht angezeigt.

    Code:
    $sqlSumScore = "SELECT
               (
               SELECT
               SUM(`spiele`.`punkte1`)
               FROM `spiele`
               WHERE `spiele`.`id_team1` = '$teamID'
               )
               +
               (
               SELECT
               SUM(`spiele`.`punkte2`)
               FROM `spiele`
               WHERE `spiele`.`id_team2` = '$teamID'
               )
               ";
    ...ich hab auch schon mit UNION getüftelt, doch jetzt geht mir die Puste aus und ich bitte euch um Hilfe.

    P.S.: Mit 2 DBs + 2 Abfragen deren Ergebnisse ich addiere klappts - is nur viel langsamer und ich denke SQL sollte das können...

    Grüße

  • Asterixus
    antwortet
    Code:
    select
        sum(
            case when
                id_team1 = $teamId
            then
                punkte1
            else
                punkte2
            end
        ) summe
    from
        spiele
    where
        id_team1 = $teamId or
        id_team2= $teamId;
    Ich würd's so machen.

    Einen Kommentar schreiben:


  • G.Schuster
    antwortet
    Zitat von ChristianK Beitrag anzeigen
    Was heisst "nicht geklappt" für mich? Fehler, falsches Resultat?
    Unabhängig von seinem "Problem" rechnet dein SQL doch punkte1 + punkte2 für id_team1=$id plus punkte1 + punkte2 für id_team2=$id.
    Glaube nicht, dass das so beabsichtigt wäre.

    Mit dem SQL
    Code:
    SELECT
        (SELECT SUM(`punkte1`) FROM `spiele` WHERE `id_team1` = '$teamID') + 
        (SELECT SUM(`punkte2`) FROM `spiele` WHERE `id_team2` = '$teamID')
    AS `total`
    hab ich es grad gegen Testdaten ausprobiert, klappt einwandfrei.
    Ich vermute eher, dass ein Problem bei den Daten vorliegt, aber dazu bräuchten wir eben mal alle Fakten auf dem Tisch.

    Einen Kommentar schreiben:


  • ChristianK
    antwortet
    Was heisst "nicht geklappt" für mich? Fehler, falsches Resultat?

    Einen Kommentar schreiben:


  • hsg32
    antwortet
    Ja natürlich: MySQL (sorry)

    @raiguen
    Tabellenaufbau und DB-Design lasse ich mal aussen vor...
    Hast wahrscheinlich recht, da muss noch optimiert werden...
    (Ich sagte ja: bin am Üben/Lernen )

    @ChristianK
    bis jetzt hat das noch nicht geklappt, dennoch - Danke


    Bin auch zu müde, muss morgen noch mal dran...

    Danke euch

    Einen Kommentar schreiben:


  • ChristianK
    antwortet
    Wie wäre es mit (schematisch)

    Code:
    SELECT SUM(punkte1) + SUM(punkte2) AS summe FROM spiele WHERE id_team1 = $id OR id_team2 = $id
    Dito wie mein Vorredner - Schema-Diskussion aussen vor.

    Einen Kommentar schreiben:


  • raiguen
    antwortet
    Wenn MySql verwendet wird, dann kannste das 'umständlich', aber dennoch ergebnisversprechend so machen:
    PHP-Code:
    $sqlSumScore "SELECT
                       SUM(t.summe) AS Gesamtpunkte
                       FROM
                           (
                               SELECT
                               SUM(`punkte1`) AS summe
                               FROM `spiele`
                               WHERE `id_team1` = '
    $teamID'

                               UNION

                               SELECT
                               SUM(`punkte2`) AS summe
                               FROM `spiele`
                               WHERE `id_team2` = '
    $teamID'
                           ) AS t
                       "

    Tabellenaufbau und DB-Design lasse ich mal aussen vor...

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von hsg32 Beitrag anzeigen
    Hallo zusammen,
    ich übe gerade am aktuellen WM-Beispiel SQL
    Löblich.

    P.S.: Mit 2 DBs + 2 Abfragen deren Ergebnisse ich addiere klappts - is nur viel langsamer und ich denke SQL sollte das können...

    Grüße

    Dunkel Deiner Worte Inhalt. Oder so ähnlich. Erklär es bitte besser. Table-Definition, Demo-Daten, Wunschresultat.

    PS.: SQL != SQL.

    Einen Kommentar schreiben:

Lädt...
X