2011-01-25 14 views
0

Wikipediaのページタイトルが与えられているので、そのカテゴリを取得したいと思います。しかし、私はこれを効率的に行うべき場所を見つけることができないようです。ここでWikipediaからページタイトルを与えられたカテゴリのリストを取得するSQLクエリ

は、ページ・テーブルです: http://www.mediawiki.org/wiki/Manual:Page_table

、ここではcategorylinksテーブルはcategorylinks.cl_from = page.page_id ...しかし、私のプロジェクトでは、私が唯一持っているだろう http://www.mediawiki.org/wiki/Manual:Categorylinks_table

です可能なページタイトルであり、ページIDではありません。そして、page_titleは一意ではないようです。

これについてもっと良い方法がありますか?

ありがとうございました。

+1

あなたは、実際にはMediaWiki(ないウィキペディア)について話していますか?はいの場合は、正しいタグとタイトルを入力してください。 – Kel

+0

私は特にそれらのウィキペディアのテーブルを話しています。 – apexdodge

答えて

2

ページタイトルは一意である名前空間。デフォルトの名前空間で検索するには

、ここでは名前空間0内の検索は、おそらく使用するクエリです:

SELECT `categorylinks`.`cl_to` 
FROM `page` 
JOIN `categorylinks` ON `categorylinks`.`cl_from` = `page`.`page_id` 
WHERE `page`.`page_namespace` = 0 AND `page`.`page_title` = 'Page_name_here' 
+0

これは、ありがとう、あなたは命の恩人です。 – apexdodge

0

AFAIK、page_titleは実際には一意です。 MediaWikiロジックによって提供されます:同じタイトルの2つのページを作成しようとしましたか? 2つの同等のタイトルのページを持つURLはどのように見えますか?

したがって、タイトル名でPage tableからpage_idを取得し、Categorylikns tableのpage_idを使用してカテゴリのリストを取得すると、2つのテーブルへのクエリが必要です。

+0

ええ、それは私がもともと考えていたものですが、ページテーブルの情報を見ると、page_titleは「ユニーク」またはあらゆる種類のキーとしてリストされていません。それが問題でない限り? – apexdodge

+0

私は、page_titleの一意性に頼ることができると思います。同じタイトルの2つのページを作成する有効な方法はわかりません。 – Kel

+0

私はそれをテストしました、page_titleはテーブル内の一意のキーとして扱われません。 – apexdodge

関連する問題