Announcement

Collapse
No announcement yet.

Sum Funktion Komplex

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sum Funktion Komplex

    Hallo zusammen

    ich bin gerade am verzweifeln. Folgende Problemstellung:
    Ich habe 4 identische Tabels und möchte über diese 4 Tabels gleichzeitig eine Abfrage machen.
    Hier die einzelnen Selects die ich zu einem verschmelzen möchte:

    <pre>
    SELECT t1.Usernick, SUM( t1.Betrag ) AS sum
    FROM sender_stat AS t1
    GROUP BY t1.Usernick
    ORDER BY sum DESC

    SELECT t2.Usernick, SUM( t2.Betrag ) AS sum2
    FROM webmaster_stat AS t2
    GROUP BY t2.Usernick
    ORDER BY sum2 DESC

    SELECT t3.Usernick, SUM( t3.Betrag ) AS sum3
    FROM clone_stat AS t3
    GROUP BY t3.Usernick
    ORDER BY sum3 DESC

    SELECT t4.Usernick, SUM( t4.Betrag ) AS sum4
    FROM master_stat AS t4
    GROUP BY t4.Usernick
    ORDER BY sum4 DESC
    </pre>

    Das Resultat sollte eine Liste sein in der jedem vorhanden Usernick die Gesamtsumme sumt =(sum1 + sum2 + sum3 + sum4) für diesen Usernick angegeben wird, am besten sortiert als sumt DESC

    Irgendwie keriege ich bei allen meinen Versuchen Kartesiche Produkte. Datenbank is mysql.

    Wer kann mir da helfen, bin jetzt schon 3 Tage dran ....

    Gruss
    Urs Püntener

  • #2
    Hallo Urs,

    mysql kann wahrscheinlich immer noch kein Subselect, aber probier mal, ob es mit einem View über einen Union klar kommt:

    <PRE>
    create view sumview (Usernick, Betrag) as
    SELECT t1.Usernick, SUM( t1.Betrag ) AS sum
    FROM sender_stat AS t1
    GROUP BY t1.Usernick
    union
    SELECT t2.Usernick, SUM( t2.Betrag ) AS sum2
    FROM webmaster_stat AS t2
    GROUP BY t2.Usernick
    union
    SELECT t3.Usernick, SUM( t3.Betrag ) AS sum3
    FROM clone_stat AS t3
    GROUP BY t3.Usernick
    union
    SELECT t4.Usernick, SUM( t4.Betrag ) AS sum4
    FROM master_stat AS t4
    GROUP BY t4.Usernick
    ;

    select Usernick, sum(Betrag) from sumview group by Usernick order by 2;
    </PRE>

    Gruß
    Usch

    Comment


    • #3
      Hallo Uschi

      Du hast mich auf die richtige Spur gebracht, leider ist bei mysql noch keine views unterstützt und auch der UNION scheint seine Macken zu habe. Deshlab habe ich nun folgende Lösung implementiert. Nicht schön, aber geht ...

      <PRE>
      CREATE TEMPORARY TABLE sumview TYPE=HEAP AS
      SELECT t1.Usernick, SUM( t1.Betrag ) AS Betrag
      FROM sender_stat AS t1
      GROUP BY t1.Usernick;
      INSERT INTO sumview SELECT t2.Usernick, SUM( t2.Betrag ) AS Betrag
      FROM webmaster_stat AS t2
      GROUP BY t2.Usernick;
      INSERT INTO sumview SELECT t3.Usernick, SUM( t3.Betrag ) AS Betrag
      FROM clone_stat AS t3
      GROUP BY t3.Usernick;
      INSERT INTO sumview SELECT t4.Usernick, SUM( t4.Betrag ) AS Betrag
      FROM master_stat AS t4
      GROUP BY t4.Usernick ;
      SELECT Usernick, sum(Betrag) FROM sumview group by Usernick order by 2;
      DROP TABLE sumview;
      </PRE>

      Gruss
      Ur

      Comment

      Working...
      X