2017-12-06 4 views
1

Ich habe einen Blog mit 2 Tabelle. Erste posts Tabelle mit einem Schlüssel category_id und categories Tabelle. Auf einer Seite möchte ich alle Kategorien mit der Anzahl ihrer Beiträge anzeigen. Ich schreibe diese Abfrage, aber es hat ein Problem. Es wurden keine Kategorien ohne Posts angezeigt. in anderen Wortkategorien mit 0 Posts erschien nicht in den Ergebnissen.Join und Gruppe von nicht richtig funktioniert in Laravel

Und kann Ihnen helfen, diese in beredten System in Laravel

SELECT categories.* , Count(posts.total) as total 
FROM categories 
LEFT JOIN 
(
    SELECT * , COUNT(*) as total from posts GROUP By posts.id 
) as posts 
ON posts.category_id = categories.id 
+1

Was genau erwarten Sie von Ihrem äußeren 'COUNT' zu tun, wenn Sie nicht tun habe eine äußere 'GROUP BY'? Außerdem sollten Sie sich angewöhnen, Ihre Spalten explizit auszuwählen, anstatt '*' zu verwenden, damit Sie dem SQL-Standard folgen können, Spalten auszuwählen, die entweder Aggregatfunktionen sind (z. B. COUNT) oder in Ihrer GROUP aufgeführt sind BY'. –

Antwort

0

Versuchen folgende Abfrage zu schreiben:

SELECT categories.* , IFNULL(Count(posts.id),0) as total 
FROM categories 
LEFT JOIN 
posts 
ON posts.category_id = categories.id 
Group by categories.id; 
+0

nein, leider funktioniert es nicht –

+0

bitte versuchen Sie die bearbeitete Abfrage –

+0

ja es hat funktioniert, danke –

Verwandte Themen