Klaus Mock: Problem für MySQL Profis

Beitrag lesen

Hallo,

SELECT COUNT(*) as bewertungen, SUM(bewertung.sterne) as bewertung, artikel.artikelname, artikel.artikelnummer, artikel.preis, artikel.alter_preis, artikel.sonderangebot, artikel.beschreibung, artikel.stueckzahl, artikel.verkauft, (100.00 - round(((100 * artikel.preis) / artikel.alter_preis),2)) as prozentsatz FROM sfb_artikel as artikel, sfb_bewertung as bewertung WHERE artikel.artikelnummer='1' AND bewertung.artikelnummer='1' GROUP BY bewertung.artikelnummer

Zuerst einmal ist es eine Unsitte, die dummerweise von mySQL auch noch unterstützt wird, wenn man Felder ohne Aggregat-Funktionen abfrägt, die nicht auch in der GROUP BY - Klausel vorkommen. Andere Datenbanksysteme würden hier richtigerweise einen Fehler feststellen, und die Ausführung solcher Statements verweigern.

Das Zauberwort für Dein Problem ist 'OUTER JOIN'. Abfragen über mehrere Tabellen sollten, wenn das DBMS es unterstützt, mittels JOIN-Anweisungen gebildet werden. OUTER JOINs sind JOINs, die es Erlauben Datensätze aus der einen Tabelle auch anzeigen zu lassen, welche keine zugeordneten Dtaensätze in einer verknüpften Tabelle besitzen.
Wie das genau geht kannst Du der Dokumentation der Datenbank (in Deinem Falle eben mySQL) entnehmen. http://www.mysql.com/doc/en/JOIN.html

Grüße
  Klaus