首先,我很抱歉标题过于模糊,但是我不熟悉此类问题的正确术语。
我正在尝试从维基词典(基于维基媒体维基的词典)中检索页面标题列表,其中页面必须归类为English_lemmas
,但不得归类为English_phrases
、English_slang
和English_%_forms
(其中 % 是通配符)。
两个必要的表是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 |
+---------+-------------------------+
wherecategorylinks.cl_from
是对类别的直接引用,page.page_id
并且categorylinks.cl_to
是类别的标题。
我需要选择race
andfire
因为它们都被归类在 之下English_lemmas
,但不是 racing
,或者that's all folks
除了都被归类在它们之下之外,English_lemmas
它们还分别归类在English_%_forms
and之下English_phrases
,而不是psychédélique
因为它没有归类在之下English_lemmas
。
因此理想的结果是
+---------+------------------+
| page_id | page_title |
+---------+------------------+
| 0 | race |
| 3 | fire |
+---------+------------------+
这是可以有效实现的吗?如果是这样,我怎样才能做到这一点?
我对 SQL(基本的 SELECT、UPDATE 等语句)有相当基本的了解,所以这样的事情远远超出了我的理解。