Ich habe diese Tabellen:Mysql select sum() aus einer anderen Tabelle
Tabelle: Artikel
id | title | display |
-----------------------------------
1 | Fkekc | 1 |
2 | ldsdf | 1 |
3 | OTRld | 0 |
4 | QCRSA | 1 |
Tabelle: Likes
id | article_id | like | type
----------------------------------------
1 | 1 | 121 | 1
2 | 1 | 652 | 2
3 | 2 | 12 | 1
4 | 1 | 5 | 3
ich dieses Ergebnis erhalten möchten:
Article [1] => 778
Article [2] => 12
Article [3] => 0
Article [4] => 0
Ich verwende LEFT JOIN zwischen zwei Tabellen, aber diese gibt Datensätze pro likes
Tabelle zurück. so erhalte ich drei Rekord von Artikel 1
Mein Code:
SELECT articles.*,likes.like FROM `articles` LEFT JOIN `likes` ON articles.id=likes.article_id WHERE display='1'
Ich weiß, dass ich SUM()
verwenden müssen, aber ich weiß nicht, wie es verwendet
Mit Ihren Antworten finde ich, dass ich muß Verwenden Sie dies:
SELECT articles.*, sum(likes.like) as likesSum FROM `articles` LEFT JOIN `likes`ON articles.id=likes.article_id WHERE display='1' GROUP BY articles.id
Aber ich möchte Filter in Abfrage setzen. so verwenden:
SELECT articles.*, sum(likes.like) as likesSum FROM `articles` LEFT JOIN `likes`ON articles.id=likes.article_id WHERE display='1' && likesSum>='100' GROUP BY articles.id
Aber vor Code zurück kein Ergebnis
ersetzen likes.like mit sum (likes.like) als total_like –
@BikashP ich benutze es aber mein Code Rückkehr nur einen Datensatz 'article1' die Gesamt mag' haben 790' –
Gruppe von article_id ? – Dave