Klaus Mock: Problem für MySQL Profis

Beitrag lesen

Hallo,

Wieso ist es eine Unsitte, die Felder abzufragen !!??
Das versteh ich jetzt nicht, wozusind die Aggregatgfunktionen denn sonst da.

Es ist eine Unsitte, wenn man beispielsweise so etwas formuliert:
SELECT  name, strasse,  SUM(wasauchimmer)
  FROM tabelle
  GROUP BY name

und zwar nicht deshalb, weil Du SUM(wasauchimmer) verwendest, sondern weil Du 'strasse' ohne einer Aggregatfunktion ausgeben läßt, ohne 'strasse' auch in der GROUP BY Klausel zu benutzen. Es könnte ja durchaus sein, daß 'strasse' für einen Wert aus 'name' in verschiedenen Datensätzen auch unterschiedlich sein kann, was zu einer Mehrdeutigkeit führt, welche sinnvoll von einem DBMS nicht aufgelöst werden kann.

mySQL würde obiges Statement dummerweise ausführen, andere Datenbanken jedoch, wegen der angesprochenen Mehrdeutigkeit, nicht.

Mögliche Lösungen könnten dann sein:

SELECT  name,  SUM(wasauchimmer)
  FROM tabelle
  GROUP BY name

SELECT  name, MAX(strasse), SUM(wasauchimmer)
  FROM tabelle
  GROUP BY name

(wobei MAX() jetzt für eine mehr oder weniger beliebige Aggregatfunktion steht)

SELECT  name, strasse,  SUM(wasauchimmer)
  FROM tabelle
  GROUP BY name, strasse

Grüße
  Klaus