使用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