使用PHP和MySQL,我将一个网站与基于MediaWiki的wiki进行整合,以便该网站中的用户资料具有关于他们在wiki中的贡献的一些统计信息。MediaWiki:如何获取用户编辑过的最后N篇文章?
我想说明最后3篇编辑的用户的命名空间中的文章(主要之一,ID为0),无需重复,并链接到他们。
为了做到这一点,我做的更多或更少的以下内容:
// getting the article IDs
$db->query("SELECT DISTINCT rev_page
FROM revision r, page p
WHERE r.rev_page = p.page_id
AND p.page_namespace = 0
AND rev_user = {$userId}
ORDER BY r.rev_timestamp DESC
LIMIT 3");
// then the IDs are stored in $last_edited_ids...
// getting the names of the articles
$db->query("SELECT page_title
FROM page WHERE page_id
IN (" . implode($last_edited_ids, ',') . ")");
的问题是,我不知道它是正确的,但它的工作原理大部分时间:对一些用户,一篇旧文章显示为最后编辑,但第二和第三个结果是正确的。这使我的事情,我必须做错了什么,但SQL不是我的强项......
提示:如果您不知道MediaWiki数据库方案(它是相当自动复制),你可以看看它here。
我现在看到我的错误。再来一次,如果它看起来太复杂了,它是错误的:) 显然,每个'rev_id'与表中的另一个不同,所以它会随机选取一个并导致问题。我不会考虑以这种方式使用ORDER!完美解决方案 – 2009-07-16 15:44:06