【问题标题】:Adding another parameter to a join query向连接查询添加另一个参数
【发布时间】:2010-08-05 20:15:46
【问题描述】:

我正在使用一些 MySQL 表。它们的结构如下所示。

“登录”:

loginid username password email actcode disabled activated created points website location age gender

每个用户都有一个登录ID

“提交”:

submissionid loginid title slug url displayurl datesubmitted

在上面的提交表中,“loginid”是提交提交的用户的登录ID。

“评论”:

commentid loginid submissionid comment datecommented

在上面的评论表中,“loginid”是发表评论的用户的登录ID。 “submissionid”是发表评论的提交。

下面的查询按(loginid 存在的天数)+(loginid 的提交总数)* 10 +(loginid 的 cmets)对前 25 个 loginid 进行排名。

我想再包括一个因素:(loginid 已提交的 submitids 上的 cmets 总数)* 10。

这将需要以下内容:

  1. 获取给定登录 ID 的“提交”表中的所有提交 ID
  2. 汇总表“comment”中具有这些提交 ID 的条目总数

我该怎么做?

提前致谢,

约翰

$sqlStr2 = "SELECT 
    l.loginid, 
    l.username, 
    l.created,
    DATEDIFF(NOW(), l.created) + COALESCE(s.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore2
FROM login l    
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM submission 
    GROUP BY loginid
) s ON l.loginid = s.loginid
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM comment 
    GROUP BY loginid
) c ON l.loginid = c.loginid
GROUP BY l.loginid
ORDER BY totalScore2 DESC 
LIMIT 25";

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    将以下内容作为附加连接引入您的查询,然后将 total * 10 包括在您的 totalscore2 计算中。

    LEFT JOIN (
        SELECT S2.loginid, COUNT(1) AS total 
        FROM submission S2
        INNER JOIN comment C2
        ON C2.submissionid = S2.submissionid
        GROUP BY S2.loginid
    ) scs ON scs.loginid = l.loginid
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      相关资源
      最近更新 更多