我希望从用户表中获取所有用户,并在文章表中列出所有用户编写的所有文章长度的列
基本上如果我选择为每个循环运行SQL查询,这是一个代码(不好)
SELECT * FROM users
--loop
SELECT SUM(wordcount) AS totalwordcount FROM articles WHERE writer_id = user_id
我使用了LEFT JOIN,但我只能获得一个用户列表,其user_id存在于文章表中
SELECT users.name, SUM(article.wordcount) AS xox FROM users LEFT JOIN article ON users.id_usera = article.writer_id WHERE article.editor_status = 'finished' ORDER BY users.id_usera
使用此查询,我只获得文章表中存在user_id的用户,但我希望列出所有用户并返回NULL /空如果用户没有他/她的id存在的文章
你需要GROUP BY
:
SELECT u.name, SUM(a.wordcount) AS xox
FROM users u LEFT JOIN
article a
ON u.id_usera = a.writer_id AND
a.editor_status = 'finished'
GROUP BY u.name;
SELECT users.name, SUM(article.wordcount) AS TotalWordCount
FROM users
LEFT JOIN article ON users.id_usera = article.writer_id
WHERE article.editor_status = 'finished'
GROUP BY article.writer_id
ORDER BY users.id_usera