2 Datenbank-Tabellen miteinander verknüpfen -> Probleme

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

  • 2 Datenbank-Tabellen miteinander verknüpfen -> Probleme

    Hallo User

    Ich ha mal wieder ein Problem, diesmal mit meinen Datenbanken. Hab schon im Forum gesucht, auch etwas gefunden, komme aber trotzdem nicht so recht weiter.

    Ich möchte erstmal 2 Tabellen miteinander verknüpfen, dies habe ich mit folgendem SQL Befehl gemacht:
    PHP-Code:
     ...
    $query "SELECT * FROM bb".$n."_links LEFT OUTER JOIN bb".$n."_linkskommentar USING(linkid)";
    ... 
    Das klappt auch soweit. Nun ist aber das Problem, dass den meisten Linkids mehrere Werte zugewiesen werden, die ich addieren möchte.

    Bsp:

    Tabelle1: linkid=2 ....
    Tabelle2: bewertung= 3 , bewertung= 4 (in mehreren durchläufen)
    d. h.: es gibt zu einem Link unterschiedlich bewertungen

    Nun möchte ich den Durchschnitt der Bewertungen ausrechnen ((b1 + b2) /anzahlb) und diesen Wert genau zu der passenden Linkid (in diesem Fall 2) ausgeben lassen.

    Wie kann ich das am besten machen?

    Meine Ausgabe bisher ist:
    Linkid:1 ->Bewertung = 3
    Linkid:2 ->Bewertung = 5
    Linkid:2 ->Bewertung = 4

    Nach meinem Wunsch sollte dann für Linkid=1 der Wert 3 ausgegeben werden und für Linkid=2 die Bewertung (5+4)/2 [Durchschnitt]. Dies sollte dann für jede x-beliebige Anzahl von Bewertungen für eine best. Linkid funktionieren.

    Danke für die Hilfe
    Mastereye

  • #2
    warum trennst du eigentlich die links und die beschreibungen in zwei tabellen auf?
    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
      Hallo!

      Da muss ich mich wohl etwas falsch ausgedrückt haben. In der zweiten Tabelle sind Kommentare zu den Links. Und da ein Link mehrere Kommentare haben kann, habe ich das in eine andere Tabelle gepackt!

      Weiß jemand, wie ich das Problem umgehen kann?

      Kommentar


      • #4
        ich würde vorschlagen mit GROUP BY (nach linkid) zu arbeiten, dann kannst du die funktion AVG() benutzen - average = durchschnitt.

        http://www.mysql.com/doc/de/Group_by_functions.html
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke für deine Hilfe! Genau so eine Funktion habe ich gebraucht!

          Ich hab sie sogra schon erfolgreich eingesetzt. Jetzt funktioniert alles.

          Besten Dank
          Mastereye

          Kommentar


          • #6
            Hab doch noch ein kleines Problem.

            Wie kann man das machen, dass der bei der AVG() Funktion nur Werte mit einbezieht, die größer sind als 0? Oder macht der das sogar automatisch?

            Die 0 ist bei mir eine Entahaltung bei der Bewertung!

            Mastereye

            Kommentar


            • #7
              mach doch eine where bedingung (beurteilung > 0)
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Danke für den Tipp, hat jetzt doch geklappt. Ich hatte das schon vorher mit einer Where bedingung probiert, hatte die wahrscheilich aber an der falschen Stelle.

                Jetzt funktioniert es.

                Kommentar


                • #9
                  http://www.mysql.com/doc/de/SELECT.html

                  da steht die reihenfolge der schlüsselwörter
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar

                  Lädt...
                  X