SQL для Вікіпроектів/Об’єднання таблиць - Категорії
Зовнішній вигляд
Перед цим ми робили запити лише до однієї таблиці.
Категорії
[ред.]Категорії в яких знаходиться стаття 'Pro GIT' |
---|
USE ukwikibooks_p;
SELECT cl_to FROM categorylinks
JOIN page
ON categorylinks.cl_from = page.page_id
WHERE
page.page_title = 'Pro_GIT' AND
page.page_namespace = 0
|
Категорії в яких знаходиться стаття 'Pro GIT' |
---|
USE ukwikibooks_p;
SELECT cl_to FROM categorylinks, page
where page.page_title = 'Pro_GIT'
and page.page_namespace = 0
and categorylinks.cl_from = page.page_id
|
Вміст категорії 'Інформатика та програмування' |
---|
USE ukwikibooks_p;
SELECT page_title, cl_type
FROM page
JOIN categorylinks
ON cl_from = page_id
WHERE
cl_to = 'Інформатика_та_програмування'
ORDER BY cl_type DESC
|
Некатегоризовані статті |
---|
USE ukwikibooks_p;
SELECT
page_title
FROM page
WHERE
page_is_redirect = 0 AND
page_namespace = 0 AND
NOT EXISTS (
SELECT 1 FROM categorylinks
WHERE cl_from = page_id
)
ORDER BY page_title
|
Пусті категорії |
---|
USE ukwikibooks_p;
SELECT
page_title
FROM page
WHERE
page_namespace = 14 AND
NOT EXISTS (
SELECT 1 FROM categorylinks
WHERE cl_to = page_title
)
ORDER BY page_title
|
Категорії, що не мають сторінки, відсортовані за кількістю елементів у категорії |
---|
USE ukwikibooks_p;
SELECT
cl_to,
count(1) as children
FROM categorylinks
WHERE
NOT EXISTS (
SELECT 1 FROM page
WHERE page_title = cl_to
)
GROUP BY cl_to
ORDER BY children DESC
|
Всі пари категорій, що мають спільні сторінки, відсортовані за кількістю спільних сторінок |
---|
USE ukwikibooks_p;
SELECT
cat_link1.cl_to as category1,
cat_link2.cl_to as category2,
count(page_id) as pages
FROM page
JOIN categorylinks cat_link1
ON cat_link1.cl_from = page_id
JOIN categorylinks cat_link2
ON cat_link2.cl_from = page_id
WHERE
cat_link1.cl_to < cat_link2.cl_to
GROUP BY
cat_link1.cl_to, cat_link2.cl_to
ORDER BY pages DESC
|