Oli: Anzahl der Einträge in einer Datenbank -> Rangliste

Hallo,
hoffe mal, dass sowas möglich ist:
Habe eine Tabelle mit den Spalten ref und refnr. Beim Eintritt auf die Seite gibt der User eine Zahl ein, die wird als $refnr hinterlegt. Nun soll er für jeden Eintrag in der Spalte refnr drei Punkte bekommen, für jeden Eintrag in der Spalte ref zehn Punkte. Die Gesamtpunkzahl habe ich selbst hinbekommen:

$resultset1 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE nr LIKE '$refnr'" );
$resultset2 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE refnr LIKE '$refnr'" );
$anzahl1 = mysql_fetch_row ( $resultset1 );
$anzahl2 = mysql_fetch_row ( $resultset2 );
$punkte1 = $anzahl1[0] * 10;
$punkte2 = $anzahl2[0] * 3;
$punkte = $punkte1 + $punkte2;

Jetzt möchte eine Rangliste von allen Nummern erstellen, teilweise sind die Nummern in beiden Spalten vorhanden, teilweise nur in einer. Es sollen ALLE Nummern (also aus beiden Spalten) als Rangliste dargestellt werden. Ich halte das für unmöglich (zumal ich noch SEHR neu bin), aber es geht doch bestimmt irgendwie, oder?

Danke
Oli

  1. hi,

    Beim Eintritt auf die Seite gibt der User eine Zahl ein, die wird als $refnr hinterlegt.

    Also willst du den User darüber identifizieren?

    Nun soll er für jeden Eintrag in der Spalte refnr drei Punkte bekommen,

    Wieso willst du diese Zahl dann erhöhen? Damit verlierst du ja die Identifikation des Users.

    Jetzt möchte eine Rangliste von allen Nummern erstellen, teilweise sind die Nummern in beiden Spalten vorhanden, teilweise nur in einer. Es sollen ALLE Nummern (also aus beiden Spalten) als Rangliste dargestellt werden. Ich halte das für unmöglich (zumal ich noch SEHR neu bin), aber es geht doch bestimmt irgendwie, oder?

    Unabhängig von obiger Problematik (oder meinem fehlerhaften erständnis deines Vorhabens) - Rechnen kann SQL natürlich auch.
    Du kannst also gut und gern die Summe von zwei Spalteninhalten pro Datensatz betrachten, und danach auch sortieren lassen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Habe eine Tabelle mit den Spalten ref und refnr. Beim Eintritt auf die Seite gibt der User eine Zahl ein, die wird als $refnr hinterlegt. Nun soll er für jeden Eintrag in der Spalte refnr drei Punkte bekommen, für jeden Eintrag in der Spalte ref zehn Punkte.

    Die refnr ist eine Referenznummer bzw. Kennung wie wir vermuten. Diese Nummer willst Du doch nicht wirklich um drei erhöhen? Dann kriegst Du doch den Nutzer, der sich per refnr angemeldet hat nicht mehr zu packen.

    Und ref sind wohl so eine Art Gummipunkte, d.h. meldet sich ein Nutzer per refnr an, kriegt er im Datenfeld ref 10 Gummipunkte aufs Konto?

    Fällt Dir da was auf? Seihst Du die Probleme?

    Die Gesamtpunkzahl habe ich selbst hinbekommen:

    $resultset1 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE nr LIKE '$refnr'" );
    $resultset2 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE refnr LIKE '$refnr'" );
    $anzahl1 = mysql_fetch_row ( $resultset1 );
    $anzahl2 = mysql_fetch_row ( $resultset2 );
    $punkte1 = $anzahl1[0] * 10;
    $punkte2 = $anzahl2[0] * 3;
    $punkte = $punkte1 + $punkte2;

    Hmm, Du legst bei jeder Anmeldung immer neue Datensätze an und kommst mit einem lässigen COUNT(*), neu eingeführt hier das Datenfeld nr. Die Logik des Ganzen erschliesst sich uns nicht völlig.

    Jetzt möchte eine Rangliste von allen Nummern erstellen, teilweise sind die Nummern in beiden Spalten vorhanden, teilweise nur in einer. Es sollen ALLE Nummern (also aus beiden Spalten) als Rangliste dargestellt werden. Ich halte das für unmöglich (zumal ich noch SEHR neu bin), aber es geht doch bestimmt irgendwie, oder?

    Beschreibe bitte noch einmal brutalstmöglich präzise wie die Tabelle aussieht bzw. aussehen soll und welche Punktevergabe genau beim Einlogvorgang erfolgen soll.

    Dann wäre es nicht schlecht, wenn Du die ins Auge gefasste Rangliste (zumindest dem good old King Lully) noch einmal erklären könntest.

    1. Hallo,
      ok, nochmal ganz präzise:

      User kommt auf die Seite, gibt seine Nummer und drei weitere Nummern ein:
      Seine Nummer -> $refnr
      Andere Nummern -> $nr1, $nr2, $nr3
      Diese werden jetzt in die Tabelle folgendermassen geschrieben:

      nr  |  refnr
      --------------
      $nr1 | $refnr
      $nr2 | $refnr
      $nr3 | $refnr

      So, jetzt kann natürlich auch sein, dass jemand bei nr irgendwo unten eine Nummer einträgt, die oben schon als refnr auftaucht.

      Jetzt sollen Punkte verteilt werden:
      Für jedes mal Leute eintragen soll es 9 Punkte geben (3 für jeden), also lass ich einfach in der rechten Spalte zählen, wie oft die refnr vorkommt und multipliziere das ganze mit 3. Dazu addiere ich dann 10 Punkte für jedes Auftreten in der linken Spalte, also 10 mal die Anzahl, wie oft derjenige von anderen eingetragen wurde.

      Bis dahin ist das alles kein Problem.

      Allerdings soll er jetzt die Punktzahl von ALLEN refnr. auswerten, also von allen, die rechts in der Spalte stehen. Wenn eine refnr oben auftaucht und erneut, soll nur die erste der beiden gewertet waren, da eine refnr ja nicht doppelt in der Rangliste vorkommen soll und da die Häufigkeit des Erscheines in der rechten Spalte ja schon durch die Formel belohnt wird.

      Wie ist das ganze zu realisieren (den Sinn müsst ihr nicht verstehen, es geht um ein kleines Spiel, kann ich bei Bedarf später mal genauer erklären.

      Danke
      Oli

      1. nr  |  refnr

        $nr1 | $refnr
        $nr2 | $refnr
        $nr3 | $refnr

        So, jetzt kann natürlich auch sein, dass jemand bei nr irgendwo unten eine Nummer einträgt, die oben schon als refnr auftaucht.

        Das ist richtig. Aber das _darf_ kein Problem sein.

        Jetzt sollen Punkte verteilt werden:
        Für jedes mal Leute eintragen soll es 9 Punkte geben (3 für jeden), also lass ich einfach in der rechten Spalte zählen, wie oft die refnr vorkommt und multipliziere das ganze mit 3.

        OK, für jeden Eintrag gibt es 3 Gumipunkte, wenn 3 Einträge Pflicht sind, werden 9 Gummies erzwungen. Ein "COUNT(*)" ist zusammen mit einem "GROUP BY refnr" dann für Abfrage die richtige Wahl.

        Dazu addiere ich dann 10 Punkte für jedes Auftreten in der linken Spalte, also 10 mal die Anzahl, wie oft derjenige von anderen eingetragen wurde.

        Aha, nr und refnr zeigen auf dasselbe Objekt, nämlich den Nutzer, gut zu wissen. Es gibt also Gummies für jeden Eintrag (3 Gummies) und Gummies, wenn man eingetragen worden ist (stolze 10 Gummies).

        Bis dahin ist das alles kein Problem.

        Ich hoffe, dass Du irgendwo noch eine zweite Tabelle hast für die Nutzer, so dass wir die o.g. Tabelle als Beziehungstabelle haben?

        Allerdings soll er jetzt die Punktzahl von ALLEN refnr. auswerten, also von allen, die rechts in der Spalte stehen.

        OK, wie Du die Gummies kriegst, die durch Pflicht-Eintragen (jew. 9) generiert werden, ist oben beschrieben.

        Nun, vermutlich möchtest Du die 10er-Gummies zu den 3er-Gummies zusammenzählen? Hmm, wie geht das? (Denk...)

        Mit einem "COUNT(*)" auf das Datenfeld nr und einem "GROUP BY nr" kriegst Du die 10er-Gummies.

        Jetzt hast Du zwei Datensatzmengen, die Du irgendwie zusammenführen müsstest. Dabei darf die Information nicht verloren gehen, ob es 3er- oder 10er-Gummies sind. Korrekt?

        Wenn eine refnr oben auftaucht und erneut, soll nur die erste der beiden gewertet waren, da eine refnr ja nicht doppelt in der Rangliste vorkommen soll und da die Häufigkeit des Erscheines in der rechten Spalte ja schon durch die Formel belohnt wird.

        Schon klar, das erledigt die Gruppierung.

        Wie ist das ganze zu realisieren (den Sinn müsst ihr nicht verstehen, es geht um ein kleines Spiel, kann ich bei Bedarf später mal genauer erklären.

        Das ist oben beschrieben (ausser dem Zusammenführen der beiden Datensatzmengen, dafür sind wir bereits ein wenig zu müde ;).

        Moment, wir gehen noch mal in die Ausgangsanforderung:
        $resultset1 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE nr LIKE '$refnr'" );
        $resultset2 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE refnr LIKE '$refnr'" );

        Ja, das ist Murks, versuch mal:
        SELECT (COUNT(*) * 3) as Dreiergummies, refnr as Nr FROM haupttabelle GROUP BY REFNR order by REFNR asc
        SELECT (COUNT(*) * 10) as Zehnergummies, nr as Nr FROM haupttabelle GROUP BY nr order by nr asc

        Mit irgendwelchen SUB-SELECTs und ggf. ein wenig UNION kommst Du dann sicherlich mit einer Abfrage an die Rangliste.

        1. Hallo,
          habe versucht dir zu folgen, habe auch einiges davon verstanden ;)
          Also soll ich am besten eine Tabelle für refnr<->10er-gummies, eine für refnr<->3er-gummies und eine für refnr<->punkte machen, oder wie? Oder kann ich 10er und 3er gummies in eine packen? SUB-SELECT und UNION sagt mir noch gar nichts, bin morgen den ganzen Tag weg, lese mich dann am Abend mal ein. Wäre klasse, wenn jemand bis dahin noch eine genauere Beschreibung hat, was ich in welche Tabelle packen muss und wieviele Tabellen ich brauche.

          Vielen, vielen Dank!!
          Oli

          1. habe versucht dir zu folgen, habe auch einiges davon verstanden ;)
            Also soll ich am besten eine Tabelle für refnr<->10er-gummies, eine für refnr<->3er-gummies und eine für refnr<->punkte machen, oder wie?

            Bloss nicht, Du machst (vermutlich ;) alles richtig. Wir haben einerseits ein wenig über die Anforderung meditiert und anderseits über die Ranglistenerstellung.

            Oder kann ich 10er und 3er gummies in eine packen? SUB-SELECT und UNION sagt mir noch gar nichts, bin morgen den ganzen Tag weg, lese mich dann am Abend mal ein. Wäre klasse, wenn jemand bis dahin noch eine genauere Beschreibung hat, was ich in welche Tabelle packen muss und wieviele Tabellen ich brauche.

            Du brauchst die Tabelle die Du hast und eine weitere, den Deine Nutzer haben doch sicherlich auch Namen und loggen sich doch ein, oder? (Wenn nicht, dann vergiss Tabelle 2. ;)

            Wichtig ist, dass Du die zwei Abfragen für die 3er-Gummipunkte und für die 9er-Gummies an den Start bringst (Du erhältst mehr als einen Datensatz zurück, also eine Datensatzmenge.) Funzt das, dann kannst Du hier gerne die Zusammenführung der beiden Datensatzmengen zur Diskussion bringen.

            1. Du brauchst die Tabelle die Du hast und eine weitere, den Deine Nutzer haben doch sicherlich auch Namen und loggen sich doch ein, oder? (Wenn nicht, dann vergiss Tabelle 2. ;)

              Hallo,
              nein, es geht lediglich um die Nummer, die eingegeben wird. Woher die Nummer kommt usw. habe ich bereits fertig und es funktioniert auch, daher ist das jetzt erstmal egal ;). Also nur eine Tabelle.

              Wichtig ist, dass Du die zwei Abfragen für die 3er-Gummipunkte und für die 9er-Gummies an den Start bringst (Du erhältst mehr als einen Datensatz zurück, also eine Datensatzmenge.) Funzt das, dann kannst Du hier gerne die Zusammenführung der beiden Datensatzmengen zur Diskussion bringen.

              Wie gesagt, ich weiss, wie ich für eine Nummer die Punkte rausbekomme. Wie kann ich denn alle Zeilen nach und nach durchgehen und die Punkte jeder Nummer in eine Datensatzmenge bekommen? Problem ist ja auch, dass er (vermutlich) Nummern, die weiter unten ein erneutes Mal auftreten, nochmal neu in die Datensatzmenge schreibt... An diesem Punkt sind meine PHP-Kenntnisse (wenn man das schon Kenntnisse nennen darf..) am Ende. Wenn es eine Möglichkeit gibt, bin ich gerne bereit, neue Dinge zu lernen, jedoch brauche ich noch ein paar Tips mehr, ich verlange ja nicht von euch, dass ihr mir das alles fertig macht! :)

              Danke und Grüße
              Oli

              1. Wie kann ich denn alle Zeilen nach und nach durchgehen und die Punkte jeder Nummer in eine Datensatzmenge bekommen?

                Ich weiss nicht, ob es Dir hilft, aber ein "Durchgehen", also ein Lauf (für die Älteren ;) ist in SQL wenig erstrebenswert, darum hat man da ja so coole Sachen wie "Datensatzmenge" und "Gruppieren".

                Hast Du mal die Ratschläge befolgt und die genannten SQL-Statements gegen die DB gejagt?

                1. Hallo,
                  habe jetzt mit COUNT(*) zwei Datensatzmengen raus, jeweils Nummer und Punkte als Spalten. Wie bekomme ich die beiden Tabellen jetzt in eine, so dass er mir die Punkte immer brav zusammenzählt? Zu bedenken ist, dass manche Nummern nur in einer der Tabellen auftreten.

                  Vielen Dank,
                  Oli

                  1. habe jetzt mit COUNT(*) zwei Datensatzmengen raus, jeweils Nummer und Punkte als Spalten. Wie bekomme ich die beiden Tabellen jetzt in eine, so dass er mir die Punkte immer brav zusammenzählt? Zu bedenken ist, dass manche Nummern nur in einer der Tabellen auftreten.

                    Grundsätzliche Vorgehensweise: Datensatzmengen auf gleiche Anzahl Spalten trimmen, ebenfalls (ggf. ;) auf gleiche Namen achten und ein trockenes UNION anbringen.

                    Ggf. auf diese nun entstandene Datenmenge ein weiteres SELECT losjagen, Stichwort: Sub-SELECTs.

                    1. Grundsätzliche Vorgehensweise: Datensatzmengen auf gleiche Anzahl Spalten trimmen, ebenfalls (ggf. ;) auf gleiche Namen achten und ein trockenes UNION anbringen.

                      Ok,
                      wie fügt er das dann zusammen? Was macht er z.B., wenn ID, Nr und Punkte in beiden Tabellen gleich war? Ändert der die ID automatisch?

                      Ggf. auf diese nun entstandene Datenmenge ein weiteres SELECT losjagen, Stichwort: Sub-SELECTs.

                      Kannst du kurz schilder, wozu ich noch eine weitere Operation brauche? Was genau macht SUB-SELECT?

                      Danke
                      Oli

                      1. Grundsätzliche Vorgehensweise: Datensatzmengen auf gleiche Anzahl Spalten trimmen, ebenfalls (ggf. ;) auf gleiche Namen achten und ein trockenes UNION anbringen.

                        Ok,
                        wie fügt er das dann zusammen? Was macht er z.B., wenn ID, Nr und Punkte in beiden Tabellen gleich war? Ändert der die ID automatisch?

                        Wir haben hier nicht zwei Tabellen sondern zwei Datensatzmengen. Haben die beiden Abfragen funktioniert? Wie sehen die Datensatzmengen aus?

                        Ggf. auf diese nun entstandene Datenmenge ein weiteres SELECT losjagen, Stichwort: Sub-SELECTs.

                        Kannst du kurz schilder, wozu ich noch eine weitere Operation brauche? Was genau macht SUB-SELECT?

                        Zwei "Tricks" sind hier anzuwenden:
                        1.) Zusammenführung der beiden Datensatzmengen mit UNION, Beispiel:

                          
                        SELECT  
                         DF_1,  
                         DF_2  
                        FROM  
                         DT_1  
                        UNION SELECT  
                         DF_1,  
                         DF_2  
                        FROM  
                         DT_2  
                        
                        

                        2.) Sub-SELECTs, Beispiel:

                          
                        SELECT  
                         DF_1,  
                         DF_2  
                        FROM  
                         (  
                         SELECT  
                          DF_1,  
                          DF_2  
                         FROM  
                          DT_1  
                         ) DT_Temp  
                        
                        

                        oder kombiniert:

                          
                        SELECT  
                         DF_1,  
                         DF_2  
                        FROM  
                         (  
                         SELECT  
                          DF_1,  
                          DF_2  
                         FROM  
                          DT_1  
                         UNION SELECT  
                          DF_1,  
                          DF_2  
                         FROM  
                          DT_2  
                         ) DT_Temp  
                        
                        

                        Eine gewisse "Eigenbeschäftigung" mit der Thematik an Hand der Doku des verwendeten Datenservers wäre auch nicht schlecht.

                        1. Hallo,
                          vielen Dank,
                          bin schon ein Stück weiter, hab auch ein bisschen gelesen, dennoch habe ich noch ein paar Probleme. So weit bin ich:

                          $resultset1 = mysql_query ( "SELECT (COUNT(*) * 3) as Drei, reficq as Nr FROM haupttabelle GROUP BY reficq order by reficq asc" );
                          $resultset2 = mysql_query ( "SELECT (COUNT(*) * 10) as Zehn, icq as Nr FROM haupttabelle GROUP BY icq order by icq asc" );
                          $resultset = mysql_query ( "(SELECT (COUNT(*) * 3) as Drei, refnr as Nr FROM haupttabelle GROUP BY refnr order by refnr asc) UNION (SELECT (COUNT(*) * 10) as Zehn, nr as Nr FROM haupttabelle GROUP BY nr order by nr asc) ORDER BY Nr" );

                          Wenn ich resultset1 und resultset2 so ausgebe:

                          while($daten1 = mysql_fetch_object($resultset1))
                          {
                          echo $daten1->Nr; echo "---"; echo $daten1->Drei; echo "<br>";
                          }

                          echo "<br><br><br>";

                          while($daten2 = mysql_fetch_object($resultset2))
                          {
                          echo $daten2->Nr; echo "---"; echo $daten2->Zehn; echo "<br>";
                          }

                          Dann erhalte ich jeweils Nummer und Punkte (entweder für die 3er oder für die 10er - das klappt auch wunderbar :).

                          -----------

                          Jetzt wollte ich die zusammengeführte Datensatzmenge dreispaltig ausgeben, so:

                          while($daten = mysql_fetch_object($resultset))
                          {
                          echo $daten->Nr; echo "---"; echo $daten->Drei; echo "---"; echo $daten->Zehn; echo "<br>";
                          }

                          Dann wurde mir nur jeweils die Nummer und der dazugehörige Wert angezeigt, habe festgestellt, dass der die 3. Spalte gar nicht darstellen kann.
                          Wenn die Nummer nur 3er hatte wurden mir die 3er-Punkte angezeigt, wenn die Nummer nur 10er hatte wurden mir nur die 10er-Punkte angezeigt - So weit, so gut. Kommt eine Nummer allerdings in beiden Datensätzen vor, so wurden immer die Punkte der 3er angezeigt - Also immer die der ersten der beiden Datensätzen bei UNION.

                          Wie bekomme ich das so hin, dass er mir, falls die Nummer in beiden Datensätzen vorkommt, die Punkte addiert und nicht überschreibt? Hab die SUB-SELECTS auch noch nicht so genau verstanden, falls die was damit zu tun haben.
                          Ich bemühe mich echt, auch selber was zu lernen, bin aber wirklich noch sehr neu in dem Ganzen.

                          Danke :)
                          Oli

                          1. Wie bekomme ich das so hin, dass er mir, falls die Nummer in beiden Datensätzen vorkommt, die Punkte addiert und nicht überschreibt? Hab die SUB-SELECTS auch noch nicht so genau verstanden, falls die was damit zu tun haben.
                            Ich bemühe mich echt, auch selber was zu lernen, bin aber wirklich noch sehr neu in dem Ganzen.

                            Dann mach mal Deine Hausaufgaben, unter Matrices kann sich eigentlich jeder was vorstellen.

                            Also, Test-Datenbasis erstellen und darauf herumhühnern und sich wieder melden, wenn UNION-Operator und SUB-Select verstanden worden ist.

                            1. Dann mach mal Deine Hausaufgaben, unter Matrices kann sich eigentlich jeder was vorstellen.

                              Also, Test-Datenbasis erstellen und darauf herumhühnern und sich wieder melden, wenn UNION-Operator und SUB-Select verstanden worden ist.

                              Welche ist die für Anfänger am besten verständliche Seite, um sich das ganze anzulernen?

                              1. Also, Test-Datenbasis erstellen und darauf herumhühnern und sich wieder melden, wenn UNION-Operator und SUB-Select verstanden worden ist.

                                Welche ist die für Anfänger am besten verständliche Seite, um sich das ganze anzulernen?

                                Keine Bücher, also am besten beim Anbieter lernen, die MySQL-Doku ist ganz gut und - falls Fragen sind - Dödel oder Ilja oder unsere Wenigkeit werden sicherlich weiterhelfen können...

                                ;)

                                1. Vincent habe ich vergessen und natürlich KM und so...

                                  ;)

                                  1. Ok, werde mich morgen Abend mal einlesen und dann nochmal nachfragen, wenn was unklar ist.. Haltet den Thread bitte im Auge ;)
                                    Sollen die Operationen denn grossteils in der DB erfolgen (MySQL), oder eher über PHP-Rechenoperationen? Ich denke doch MySQL, oder?

                                    Bis morgen Abend
                                    Oli

                                    1. Sollen die Operationen denn grossteils in der DB erfolgen (MySQL), oder eher über PHP-Rechenoperationen? Ich denke doch MySQL, oder?

                                      Möglichst alles ausser Datenausgabe-Formatierung in SQL. (Allerdings machen manche auch gerne die Formatierung mit SQL, da gibts unterschiedliche Ansätze. Manche wollen auch nicht "mit SQL" rechnen. ;)

                                      1. Sollen die Operationen denn grossteils in der DB erfolgen (MySQL), oder eher über PHP-Rechenoperationen? Ich denke doch MySQL, oder?

                                        Möglichst alles ausser Datenausgabe-Formatierung in SQL. (Allerdings machen manche auch gerne die Formatierung mit SQL, da gibts unterschiedliche Ansätze. Manche wollen auch nicht "mit SQL" rechnen. ;)

                                        Hallo,
                                        habe mal versucht, das alles zu verstehen, aber irgendwie geht das alles nicht in meinen Kopf rein und ich finde nicht die richtigen Anleitungen für meine Anforderungen :(
                                        Sind noch ein paar Tips von deiner Seite aus drin? Muss das irgendwie hinkriegen, dass er bei UNION unterschiedliche Werte der 2. Spalte bei gleichen Werten der 1. Spalte nicht überschreibt, sondern addiert.

                                        Danke
                                        Oli

                                        1. Sind noch ein paar Tips von deiner Seite aus drin? Muss das irgendwie hinkriegen, dass er bei UNION unterschiedliche Werte der 2. Spalte bei gleichen Werten der 1. Spalte nicht überschreibt, sondern addiert.

                                          "Er" "überschreibt" ja auch nichts, wenn er mit UNION zwei Datensatzmenen mergt. Wenn "er" etwas "überschreibt", dann hast Du vielleicht eine Gruppierung oder ein DISTINCT drin.

                                          1. Sind noch ein paar Tips von deiner Seite aus drin? Muss das irgendwie hinkriegen, dass er bei UNION unterschiedliche Werte der 2. Spalte bei gleichen Werten der 1. Spalte nicht überschreibt, sondern addiert.

                                            "Er" "überschreibt" ja auch nichts, wenn er mit UNION zwei Datensatzmenen mergt. Wenn "er" etwas "überschreibt", dann hast Du vielleicht eine Gruppierung oder ein DISTINCT drin.

                                            Mit Überschreiben meine ich, dass er, wenn eine Nummer in beiden Datensätzen vorkommt, er nur die Punktezahl des ersten Datensatzes dabeischreibt, anstatt die beiden Punktzahlen zu addieren.. Das Problem bekomme ich einfach nicht gelöst!

                                            Oli

                                            1. Mit Überschreiben meine ich, dass er, wenn eine Nummer in beiden Datensätzen vorkommt, er nur die Punktezahl des ersten Datensatzes dabeischreibt, anstatt die beiden Punktzahlen zu addieren.. Das Problem bekomme ich einfach nicht gelöst!

                                              SUB-Selects, Du gehst auf die gemergte Datensatzmenge (wo die Punktzahlen "dabeigeschrieben" worden sind) mit einer weiteren Abfrage. Ein Beispiel hast Du doch geliefert bekommen, Dokumentationen und so gibt es tonnenweise.

                                              1. Hi,
                                                wieder ein Stück weiter (glaube ich):
                                                Bin jetzt soweit, dass er aus den beiden Datensätzen einen macht, in der jede Nummer einmal vorkommt und einen zweiten, in dem die doppelten vorkommen.

                                                Also aus
                                                1 | 10
                                                2 | 10
                                                3 | 10

                                                und
                                                3 | 3
                                                4 | 3
                                                5 | 3

                                                macht er
                                                1 | 10
                                                2 | 10
                                                3 | 10
                                                4 | 3
                                                5 | 3

                                                und
                                                3 | 3

                                                (per SUB-SELECT hab ich den ersten komplett genommen und aus dem zweiten die Nummern rausgepickt, die noch nicht im ersten vorkommen)

                                                Ob ich jetzt wirklich weiter bin, weiss ich nicht. Jetzt brauche ich noch einen Befehl, der mir diese beiden letzten Datensätze nun so vereint, dass ich
                                                1 | 10
                                                2 | 10
                                                3 | 13
                                                4 | 3
                                                5 | 3

                                                hab. Sortieren krieg ich dann selber hin.

                                                Nach noch so viel lesen schaff ich das einfach nicht, bitte um Hilfe :(

                                                Danke
                                                Oli

                                                1. Also aus
                                                  1 | 10
                                                  2 | 10
                                                  3 | 10

                                                  und
                                                  3 | 3
                                                  4 | 3
                                                  5 | 3

                                                  macht er
                                                  1 | 10
                                                  2 | 10
                                                  3 | 10
                                                  4 | 3
                                                  5 | 3

                                                  und
                                                  3 | 3

                                                  Er sollte aber natürlich _eine_verdammte_Datensatzmenge_ zurückgeben, also:
                                                  1 | 10
                                                  2 | 10
                                                  3 | 10
                                                  4 | 3
                                                  5 | 3
                                                  3 | 3

                                                  Ich weiss nicht warum Du das nicht mit UNION gebacken bekommst.

                                                  (per SUB-SELECT hab ich den ersten komplett genommen und aus dem zweiten die Nummern rausgepickt, die noch nicht im ersten vorkommen)

                                                  Ob ich jetzt wirklich weiter bin, weiss ich nicht. Jetzt brauche ich noch einen Befehl, der mir diese beiden letzten Datensätze nun so vereint, dass ich
                                                  1 | 10
                                                  2 | 10
                                                  3 | 13
                                                  4 | 3
                                                  5 | 3

                                                  hab.

                                                  Du musst immer auch Deine Abfragen hier posten.

                                                  Nach noch so viel lesen schaff ich das einfach nicht, bitte um Hilfe :(

                                                  Trainieren musst Du, Zwischenergebnisse hier zur Disk. stellen und dann wieder trainieren. "Hilfe" und so hört sich ein wenig nach Hartz IV an.   ;)

                                                  1. Ach, noch so ein Nachtaktiver ;)

                                                    Dennoch weiss ich nicht, was ich machen soll, wenn ich bei
                                                    1 | 10
                                                    2 | 10
                                                    3 | 10
                                                    4 | 3
                                                    5 | 3
                                                    3 | 3

                                                    angekommen bin.

                                                    Sorry, ich weiss, dass ihr mich für saublöd haltet, dennoch fehlen mir einfach die Begriffe usw. dafür, so dass ich nicht mal genau weiss, wo ich nachgucken kann.
                                                    Wenn du einen Link zu genau dieser Problematik hast, lern ich das gerne selber, sogar noch lieber, als wenn mir alles "vorgesagt" wird! Ich finde nur keine vernünftige Anleitung, die von der offiziellen MySQL-HP finde ich sehr verwirrend...

                                                    Danke und habt Geduld mit mir :)
                                                    Oli

                                                    1. Dennoch weiss ich nicht, was ich machen soll, wenn ich bei
                                                      1 | 10
                                                      2 | 10
                                                      3 | 10
                                                      4 | 3
                                                      5 | 3
                                                      3 | 3

                                                      angekommen bin.

                                                      Dann hast Du eine Datensatzmenge, die Du wiederum abfragen kannst:

                                                      SELECT
                                                       DF_1,
                                                       DF_2
                                                      FROM
                                                       (
                                                       SELECT
                                                        DF_1,
                                                        DF_2
                                                       FROM
                                                        ...               -- u.s.w.
                                                       UNION SELECT
                                                       SELECT
                                                        DF_1,
                                                        DF_2
                                                       FROM
                                                        ...               -- u.s.w.
                                                       ) DT_Temp
                                                      GROUP BY
                                                       ...                -- u.s.w.

                                                      Also, versuch erst einmal überhaupt einen SUB-Select auszuführen. Dann klappts auch mit der Nachbarin.

                                                      1. SELECT
                                                        DF_1,              -- NACHTRAG: Auf Deinen Fall gemünzt brauchen wir hier ein "SUM(DF_2)"
                                                        DF_2
                                                        FROM
                                                        (
                                                        SELECT
                                                          DF_1,
                                                          DF_2
                                                        FROM
                                                          ...               -- u.s.w.
                                                        UNION SELECT
                                                        SELECT
                                                          DF_1,
                                                          DF_2
                                                        FROM
                                                          ...               -- u.s.w.
                                                        ) DT_Temp
                                                        GROUP BY
                                                        ...                -- u.s.w.