Philipp Hasenfratz: Problem für MySQL Profis

Beitrag lesen

Halihallo Klaus

Nein, aber wenn artikel.artikelnummer der PRIMARY KEY von artikel ist (was ich annehme),
dann muss die RDBMS zumindest nicht raten und der Query ist vom Inhalt her AFAIK OK.
wobei ja nach bewertung.artikelnummer gruppiert wird, was zur Folge hat, daß, sofern noch keine Bewertungen zum Artikel existieren, dieses Feld NULL ist. imho ist das Statement auch aus fachlicher Sicht nicht korrekt,

Gegenfrage: Kann man dieses fachlich korrekt formulieren? - Das Problem ist der OUTER
JOIN, welcher NULL-Values produziert. Ob die Anfrage sachlich korrekt ist und dem
gewollten Ziele dienlich ist, hängt nicht zuletzt von der Implementierung der NULL-Values
in der DBMS ab.

Aus: http://www.mysql.com/doc/en/GROUP-BY-Functions.html
---
COUNT(expr)
Returns a count of the number of non-NULL values in the rows retrieved by a SELECT statement:
mysql> SELECT student.student_name,COUNT(*)
    ->        FROM student,course
    ->        WHERE student.student_id=course.student_id
    ->        GROUP BY student_name;

COUNT(*) is somewhat different in that it returns a count of the number of rows retrieved, whether or not they contain NULL values. COUNT(*) is optimised to return very quickly if the SELECT retrieves from one table, no other columns are retrieved, and there is no WHERE clause.
---

Leider wurde hier nicht genannt, wann NULL-Values genau gezählt werden. Es gibt jedoch,
wenn ich die Absätze richtig interpretiere einen Unterschied zwischen COUNT(*) und
COUNT(expr). Letzterer liefert nur die Anzahl non-NULL-Values zurück, während ersterer
auch die NULL-Values zählt. SUM(expr) zählt IMHO nur non-NULL Values, sprich funktioniert
im Sinne der Aufgabenstellung. Fehler liegt also bei COUNT, durch hinzufügen des Primary
Keys in COUNT() dürfte die Abfrage fachlich korrekt im Sinne von MySQL sein. Oder
siehst du etwas anderes?

abgesehen davon daß es wirklich nur unter mySQL funktionert.

Nun ja, die Syntax ist immer Systemabhängig, liesse sich aber ohne grosse Aufwände
in andere Datenbanken portieren; oder verhalten sich etwa _alle_ anderen Datenbanken
anders? - Das glaube ich weniger...

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.