Werte addieren

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

  • Werte addieren

    Ahoi !

    Ich hab hier eine Sache zu erledigen und komm dabei alleine wohl nicht mehr weiter.
    Ich habe 2 Tabellen in meiner Datenbank.In Tabelle A sind die felder id und name und in Tabelle B habe ich die Felder anzahl und own !

    So jetzt möchte ich nach folgendem Schema die Werte von anzahl (Tabelle B) addieren:

    Angenommen in Tabelle A ist ein Eintrag id=1 , name=name1 , einer mit id=2 , name=name1 usw. und in Tabelle B sind die Einträge anzahl=4 , own=1 , anzahl=53 , own=1 , anzahl=66 , own=97 usw.

    Dann habe ich noch eine variable $user .
    Jetzt sollen alle Einträge aus Tabelle A gewählt werden wo name=$user ist - davon der Wert von "id" - und nach diesem Wert alle Einträge aus Tabelle B wo own=der_wert_von_id ist.
    Und diese sollen schließlich alle addiert werden so dass ich eine Zahl bekomme!

    So ... ist jetzt noch irgendjemand durchgestiegen , so wäre ich einerseits überrascht aber auch sehr froh
    Wenn noch Fragen sind so stellt sie doch bitte.

    Gruss
    Supadog

  • #2
    also so ganz habe ich dich nicht verstanden.

    ich versuche es mal auf ein minimum an notwendiger info einzugrenzen.

    du hast viele werte in tabelle A. eine spalte soll aus tabelle B summiert werden, wo in einer spalte der tabelle A der name immer identisch ist. richtig? dann ist das mit einer einfachen sql-query möglich.

    Code:
    SELECT    A.name,
              SUM(B.anzahl)
    FROM      tabelle_a A
                LEFT OUTER JOIN tabelle_b B ON A.id = B.own
    GROUP BY  A.name
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      J danke - aber wo st der $user abgeblieben ?

      Kommentar


      • #4
        den kannste dir ja wieder in WHERE reinschreiben.
        ich habs mal als komplett-liste gemacht.

        Code:
        SELECT    A.name,
                  SUM(B.anzahl)
        FROM      tabelle_a A
                    LEFT OUTER JOIN tabelle_b B ON A.id = B.own
        WHERE     name = 'dein_name_eben'
        GROUP BY  A.name
        das gehört dann auch ins sql-forum. *VERSCHIEB*
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Und wo liegt hierbei der Fehler ?
          PHP-Code:
          $nahrung=mysql_fetch_array(mysql_query("SELECT SUM(a.workers_on),a.dorf_id FROM felder a JOIN doerfer b WHERE b.user_id=$userinfo[user_id] and b.dorf_id=a.dorf_id "));
          print 
          $nahrung[workers_on]; 

          Kommentar


          • #6
            warum schreibst du alles ein eine zeile????
            da wundert mich ja nicht, dass du den überblick verlierst.

            PHP-Code:
            $sql "SELECT    SUM(a.workers_on),
                              a.dorf_id
                    FROM      felder a
                                JOIN doerfer b USING(dorf_id)
                    WHERE     b.user_id = "
            .$userinfo[user_id]."
                    GROUP BY  a.dorf_id
                    LIMIT     1"
            ;

            $result mysql_query($sql);
            $nahrung mysql_fetch_array($result);

            print 
            $nahrung[workers_on]; 
            EDIT:
            und wenn du nur einen datensatz ausgeben willst, kann
            man auch LIMIT verwenden.

            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Danke !
              Aber komischerweiße kommt ein Fehler und mysql_error() geht auch nicht

              Kommentar


              • #8
                Original geschrieben von Supadog
                Aber komischerweiße kommt ein Fehler und mysql_error() geht auch nicht
                wie ist den die fehlermeldung?

                teste mal diesen code. hier ist auch das mysql_error() mit drin.

                PHP-Code:
                $sql "SELECT    SUM(a.workers_on),
                                  a.dorf_id
                        FROM      felder a
                                    JOIN doerfer b USING(dorf_id)
                        WHERE     b.user_id = "
                .$userinfo[user_id]."
                        GROUP BY  a.dorf_id
                        LIMIT     1"
                ;

                $result mysql_query($sql) or die(mysql_error());
                $nahrung mysql_fetch_array($result);

                print 
                $nahrung[workers_on]; 
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Da kommt jetzt folgender Fehler:
                  Code:
                  You have an error in your SQL syntax near 'USING(dorf_id) WHERE b.user_id = 1 GROUP BY a.dorf_id ' at line 4
                  Sagt mir leider nicht so viel - muss das mit JOIN usw. mal genauer kennenlernen (finde dazu aber nur Schrott).

                  Kommentar


                  • #10
                    hatte einen fehler aus deinem code übernommen ...

                    jetzt sollte es aber gehen.

                    PHP-Code:
                    $sql "SELECT    SUM(a.workers_on),
                                      a.dorf_id
                            FROM      felder a
                                        LEFT OUTER JOIN doerfer b USING(dorf_id)
                            WHERE     b.user_id = "
                    .$userinfo[user_id]."
                            GROUP BY  a.dorf_id
                            LIMIT     1"
                    ;

                    $result mysql_query($sql) or die(mysql_error());
                    $nahrung mysql_fetch_array($result);

                    print 
                    $nahrung[workers_on]; 
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Jo danke , bloß hab ich jetzt festgestellt dass in doerfer die Spalte dorf_id nicht dorf_d sondern id heißt und habe das ganze so umgeändert:

                      PHP-Code:
                      $sql "SELECT    SUM(a.workers_on),
                                        a.dorf_id
                              FROM      felder a
                                          LEFT OUTER JOIN doerfer b USING(id)
                              WHERE     b.user_id = "
                      .$userinfo[user_id]."
                              GROUP BY  a.dorf_id
                              "
                      ;

                      $result mysql_query($sql) or die(mysql_error());
                      $nahrung mysql_fetch_array($result);

                      print 
                      $nahrung[workers_on]; 
                      Und bekomme folgenden fehler:
                      Unknown column 'a.id' in 'on clause'

                      Hätt ich das nicht machen dürfen ?

                      Kommentar


                      • #12
                        wenn die felder in den beiden tabellen unterschiedliche namen tragen,
                        kann man kein USING mehr verwenden.

                        dann musst du das so machen ...

                        PHP-Code:
                        $sql "SELECT    SUM(a.workers_on),
                                          a.dorf_id
                                FROM      felder a
                                            LEFT OUTER JOIN doerfer b ON a.dorf_id = b.id
                                WHERE     b.user_id = "
                        .$userinfo[user_id]."
                                GROUP BY  a.dorf_id
                                "
                        ;

                        $result mysql_query($sql) or die(mysql_error());
                        $nahrung mysql_fetch_array($result);

                        print 
                        $nahrung[workers_on]; 
                        BTW: ich würde jedoch die feldnamen immer gleich nennen, die zusammen
                        eine verbindung ergeben. so sieht man dies 1. leichter und 2. kann man USING verwenden...

                        EDIT:
                        warum hast du das LIMIT entfernt?
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          *hmpf* jetzt gibt's keine Ausgabe
                          (Hab LIMIT wieder ran)

                          Kommentar


                          • #14
                            Original geschrieben von Supadog
                            *hmpf* jetzt gibt's keine Ausgabe
                            (Hab LIMIT wieder ran)
                            auch ohne limit keine ausgabe?

                            hast du daten in der DB?
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              klar hab ich da Daten drin

                              Kommentar

                              Lädt...
                              X