Vinzenz Mai: LEFT JOIN gesucht

Beitrag lesen

Hallo Gerd,

Folgende Abfrage liefert mir aber keine Ergebnisse, wenn ich in webkatalog_vote noch keine Bewertungen für eine Seite habe, was ja auch am Anfang der Fall ist:

folgende Abfrage wird von allen mir bekannten Datenbankmanagementsystemen als syntaktisch fehlerhaft angesehen - und infolgedessen überhaupt nicht ausgeführt :-)

SELECT webkatalog.id, webkatalog.domain, webkatalog.titel, webkatalog.beschreibung, webkatalog.aufrufe, webkatalog.aufnahme, webkatalog.paket, COUNT(webkatalog_vote.id) AS anzahl_votes, AVG(webkatalog_vote.bewertung)
FROM webkatalog, webkatalog_vote
WHERE webkatalog.frei='1' AND webkatalog.id=webkatalog_vote.webkatalog_id
GROUP BY webkatalog.id


>   
> Kann doch nicht sein, dass ich da eine Abfrage machen muss um die Daten für eine Webseite zu erhalten und dann für jede Seite einzeln eine Abfrage, um herauszufinden, wieviele kommentare und Bewerungen abegegeben werden -  
  
Nein. Du suchst den LEFT JOIN. Mehr dazu gibt es im Datenbankartikel von Rouven Thimm: [Einführung Joins](http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/).  
  
In Standard-SQL ist bei einer solchen Abfrage nach jeder Spalte, die keine Aggregatsfunktion enthält, zu gruppieren. Da domain, titel, beschreibung, aufrufe, aufnahme und paket wohl von der id abhängen ist das hier kein Problem. Andernfalls benötigtest Du ein Subselect (MySQL 4.1 und neuer).  
  
  
Freundliche Grüße  
  
Vinzenz  
  
PS: [Drängelpostings](https://forum.selfhtml.org/?t=142967&m=928680) mag (nicht nur) ich nicht besonders.