【问题标题】:SQL get all users activity summed in a querySQL 在查询中获取所有用户活动的总和
【发布时间】:2019-03-26 11:49:59
【问题描述】:

我想从用户表中获取所有用户,并在文章表中对所有用户撰写的所有文章长度进行汇总

基本上 如果我选择为每个循环运行 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 的用户,但我希望列出所有用户,如果用户没有具有其 id 的文章,则返回 NULL/空

【问题讨论】:

  • 您好,能否提供具有预期输出的示例数据库记录。

标签: php mysql sql


【解决方案1】:

你需要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;

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

    • 您的答案与我的结果相同,@Gordon Linoff 的答案被标记为已接受。感谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多