Florian: MySQL Abfrage mit relationaler datenbank + SUM(), GROUP BY

Hallo Weihnachtsmuffel
sitze jetzt seit ner weile an dem problem eine SUM() GROUP BY abfrage zu starten, bei deren ausgabe ich aber die namen von personen via id aus einer extra personentabelle holen will, weil die in der ersten tabelle nur als nummer geführt sind.
Einfache sache möchte man meinen, aber irgendwie wird es nichts, habe auch nichts dazu gefunden, was mich befürchten lässt dass ich total auf dem Holzweg bin

  
$result = mysql_query("SELECT tabelle_a.name, SUM(tabelle_b.credits) FROM tabelle_b, tabelle_a GROUP BY tabelle_b.artist_id WHERE tabelle_b.artist_id=tabelle_a.id"); 

heilige grüße F

  1. Tach!

    sitze jetzt seit ner weile an dem problem eine SUM() GROUP BY abfrage zu starten, bei deren ausgabe ich aber die namen von personen via id aus einer extra personentabelle holen will, weil die in der ersten tabelle nur als nummer geführt sind.
    Einfache sache möchte man meinen, aber irgendwie wird es nichts, habe auch nichts dazu gefunden, was mich befürchten lässt dass ich total auf dem Holzweg bin

    Was ist denn das genaue Problem? Welches Ergebnis bekommst du statt des erwarteten?

    $result = mysql_query("SELECT tabelle_a.name, SUM(tabelle_b.credits) FROM tabelle_b, tabelle_a GROUP BY tabelle_b.artist_id WHERE tabelle_b.artist_id=tabelle_a.id");

    Lass bitte den PHP-Teil weg, wenn du ein SQL-Problem hast. Und beachte die Reihenfolge, in der die Klauseln aufgeführt werden müssen.

    Du brauchst also die Summe je artist_id. Dann formulier das erstmal so, also SUM() und GROUP BY. Dazu willst du nur den zur artist_id gehörenden Namen. Das kann man joinen, wobei ich mir grad nicht sicher bin, ob das in dem Fall mit dieser Gruppierung nur bei MySQL geht oder generell zulässig ist. Auf alle Fälle wäre der zweite Weg eien correlated subquery in der SELECT-Klausel, jedenfalls dann, wenn du nur den einen Wert (Name) haben möchtest. Bei mehreren Werten würde ich die Query für die Summenbildung als Subquery in der FROM-Klausel notieren (mit Alias und neben der SUMme auch noch die artist_id selektieren) und dazu die Artist-Tabelle joinen.

    dedlfix.

    1. vielen dank schonmal für deine antwort,

      wenn ich das ganze nur in tabelle_b ablaufen lasse klappt ja alles, erst wenn ich die artist_id mit dem vollen namen aus der anderen tabelle  ersetzen will (also die where abfrage) haperts,
      bekomme dann gar kein ergebnis bzw diese fehlermeldung:

      check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE tabelle_b . artist_id = tabelle_a . id
      LIMIT 0, 30' at line 1

      werde mich mal mit deinen vorschlägen beschäftigen,
      vielen dank F

      1. Hi,

        wenn ich das ganze nur in tabelle_b ablaufen lasse klappt ja alles, erst wenn ich die artist_id mit dem vollen namen aus der anderen tabelle  ersetzen will (also die where abfrage) haperts,
        bekomme dann gar kein ergebnis bzw diese fehlermeldung:

        dedlfix hat Dir doch schon gesagt, daß die Reihenfolge falsch ist.
        Muß Dir jetzt jemand das Handbuch vorlesen?
        Oder findest Du dort selbst die Reihenfolge für GROUP BY, WHERE, FROM, SELECT usw.?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Oh danke!
          mir muss niemand was vorlesen
          wie oben gesagt arbeite ich das gerade selbst durch