首先,我很抱歉这个过于模糊的标题,但我不熟悉这样一个问题的正确术语。
我正在尝试从维基词典(维基媒体基于维基词典)中检索页面标题列表,其中页面必须在English_lemmas
下分类,但必须不归类于{ {1}},English_phrases
和English_slang
(其中%是通配符)。
两个必要的表格English_%_forms
包含页面信息(page
,page_id
)和page_title
,其中包含每个页面分类的类别。
page
的相关结构如下:
categorylinks
和categorylinks
的相关结构是这样的:(我添加了换行符以便于阅读)
+---------+------------------+
| page_id | page_title |
+---------+------------------+
| 0 | race |
| 1 | racing |
| 2 | that's all folks |
| 3 | fire |
| 4 | psychédélique |
+---------+------------------+
其中+---------+-------------------------+
| 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
这是否可以有效实现?如果是这样,我怎么能实现这一目标?
我对SQL(基本的SELECT,UPDATE等语句)有一个相当基本的理解,所以这样的事情远远超出了我的理解。
答案 0 :(得分:2)
如果我理解你的要求:
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')