まず、タイトルがあいまいすぎて申し訳ありませんが、このような問題の適切な用語に慣れていません。
Wiktionary(Wikimedia wikiベースの辞書)からページタイトルのリストを取得しようとしています。ページはEnglish_lemmas
、の下に分類する必要がありますが、、、、および(%はワイルドカード)の下に分類することはできません。English_phrases
English_slang
English_%_forms
必要な2つのテーブルは、page
ページ情報(page_id
、page_title
)categorylinks
を含み、各ページが分類されるカテゴリを含みます。
の関連する構造page
は次のようになります。
+---------+------------------+
| page_id | page_title |
+---------+------------------+
| 0 | race |
| 1 | racing |
| 2 | that's all folks |
| 3 | fire |
| 4 | psychédélique |
+---------+------------------+
の関連する構造categorylinks
は次のようになります:(読みやすくするために改行を追加しました)
+---------+-------------------------+
| cl_from | cl_to |
+---------+-------------------------+
| 0 | English_lemmas |
| 0 | English_verbs |
| 1 | English_lemmas |
| 1 | English_verbs |
| 1 | English_non-lemma_forms |
| 2 | English_lemmas |
| 2 | English_phrases |
| 3 | English_lemmas |
| 3 | English_nouns |
| 4 | French_lemmas |
| 4 | French_adjectives |
+---------+-------------------------+
ここcategorylinks.cl_from
で、はカテゴリへの直接参照でpage.page_id
あり、categorylinks.cl_to
はカテゴリのタイトルです。
私は選択する必要がありますrace
し、fire
彼らは両方の下に分類されているようEnglish_lemmas
しかし、ではない racing
か、that's all folks
ほかのように両方の下に分類されることにEnglish_lemmas
、彼らはまた、下に分類されているEnglish_%_forms
とEnglish_phrases
、それぞれはなくpsychédélique
、それが下に分類されていないようEnglish_lemmas
。
したがって、理想的な結果は次のようになります。
+---------+------------------+
| page_id | page_title |
+---------+------------------+
| 0 | race |
| 3 | fire |
+---------+------------------+
これは効率的に達成できるものですか?もしそうなら、どうすればこれを達成できますか?
私はSQL(基本的なSELECT、UPDATEなどのステートメント)についてかなり基本的な知識を持っているので、このようなことは私の理解をはるかに超えています。
私があなたの要件を正しく理解した場合:
select *
from page
where page_id not in (select cl_from from categorylinks
where cl_to like 'English_%_forms'
or cl_to like 'English_phrases')
and page_id in (select cl_from from categorylinks
where cl_to like 'English_lemmas')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加