Gerd H.: Mysql-Abfrage keine Ergebnisse...

Hallo,

ich bastele mir gerade einen kleinen Webkatalog.

Hier habe ich 2 Tabellen: webkatalog und webkatalog_vote

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:

  
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 - Oder doch?

  1. Kann mir da keiner eine Antwort geben, die mich weiterbringt?

  2. 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.