【发布时间】: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。
这将需要以下内容:
- 获取给定登录 ID 的“提交”表中的所有提交 ID
- 汇总表“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";
【问题讨论】: