Select 两个 wiki 之间更大的文章
Select bigger articles among two wikipedias
使用来自 Wmflabs (https://quarry.wmflabs.org/) 的 "Quarry"。
据我了解这是 MySQL。
我如何 select 德国 wiki 中的所有文章,它们的大小都比 enwiki 中的文章大?
这是我使用的代码。我需要 de_len,但我不知道如何获得它。
USE enwiki_p;
SELECT
page_title en_title,
page_len en_len,
ll.ll_title as de_title
FROM page
JOIN langlinks ll
ON ll_from = page_id
WHERE page_namespace = 0
GROUP BY page_id
HAVING max(CASE ll_lang WHEN 'de' THEN 1 ELSE 0 END) = 0
LIMIT 10
您需要使用两个数据库中的至少三个表才能从两个 wiki 中正确获取相应文章(页面)的页面大小,以及用于关系的相关跨语言链接,以便进行良好的比较。
一个解决方案是这样的:
SELECT
enp.page_title as en_title,
enp.page_len as en_len,
dep.page_title as de_title,
dep.page_len as de_len
FROM enwiki_p.page enp
JOIN enwiki_p.langlinks enll
ON enll.ll_from = enp.page_id and ll_lang="de"
JOIN dewiki_p.page dep
ON enll.ll_title = REPLACE(dep.page_title, '_', ' ')
WHERE enp.page_namespace = 0 and enp.page_is_redirect = 0
AND dep.page_namespace = 0 and dep.page_is_redirect = 0
GROUP BY enp.page_id
HAVING dep.page_len > enp.page_len
ORDER BY dep.page_len DESC
LIMIT 100
使用来自 Wmflabs (https://quarry.wmflabs.org/) 的 "Quarry"。
据我了解这是 MySQL。
我如何 select 德国 wiki 中的所有文章,它们的大小都比 enwiki 中的文章大?
这是我使用的代码。我需要 de_len,但我不知道如何获得它。
USE enwiki_p;
SELECT
page_title en_title,
page_len en_len,
ll.ll_title as de_title
FROM page
JOIN langlinks ll
ON ll_from = page_id
WHERE page_namespace = 0
GROUP BY page_id
HAVING max(CASE ll_lang WHEN 'de' THEN 1 ELSE 0 END) = 0
LIMIT 10
您需要使用两个数据库中的至少三个表才能从两个 wiki 中正确获取相应文章(页面)的页面大小,以及用于关系的相关跨语言链接,以便进行良好的比较。 一个解决方案是这样的:
SELECT
enp.page_title as en_title,
enp.page_len as en_len,
dep.page_title as de_title,
dep.page_len as de_len
FROM enwiki_p.page enp
JOIN enwiki_p.langlinks enll
ON enll.ll_from = enp.page_id and ll_lang="de"
JOIN dewiki_p.page dep
ON enll.ll_title = REPLACE(dep.page_title, '_', ' ')
WHERE enp.page_namespace = 0 and enp.page_is_redirect = 0
AND dep.page_namespace = 0 and dep.page_is_redirect = 0
GROUP BY enp.page_id
HAVING dep.page_len > enp.page_len
ORDER BY dep.page_len DESC
LIMIT 100