This query is marked as a draft This query has been published by Solidest.

SQL

x
 
WITH RECURSIVE Descendants AS (
    -- Начальный запрос: выбираем красные категории (несуществующие категории)
    SELECT
        cl.cl_to AS root,
        cl.cl_to AS cat
    FROM categorylinks cl
    LEFT JOIN page p ON p.page_title = cl.cl_to
        AND p.page_namespace = 14
    WHERE p.page_id IS NULL
    
    UNION
    
    -- Рекурсивная часть: находим подкатегории текущей категории
    SELECT
        d.root,
        p.page_title AS cat
    FROM Descendants d
    INNER JOIN page p ON p.page_namespace = 14
        AND p.page_title = d.cat
    INNER JOIN categorylinks cl ON cl.cl_to = p.page_title
    WHERE (SELECT page_namespace FROM page WHERE page_id = cl.cl_from) = 14
)
SELECT
    CONCAT('[[Категория:', CONVERT(d.root USING utf8), ']]') AS CategoryLink,   -- Формируем ссылку на корневую категорию
    GROUP_CONCAT(DISTINCT CONCAT('[[', CONVERT(p2.page_title USING utf8), ']]') SEPARATOR ', ') AS UsedInPages, -- Список статей в категории и её подкатегориях
    COUNT(DISTINCT p2.page_id) AS UsageCount    -- Количество статей
FROM Descendants d
INNER JOIN categorylinks cl2 ON cl2.cl_to = d.cat
INNER JOIN page p2 ON p2.page_id = cl2.cl_from
WHERE p2.page_namespace = 0 -- Берём только статьи из основного пространства
GROUP BY d.root
HAVING UsageCount > 0   -- Отбираем только те категории, в которых есть статьи
ORDER BY UsageCount DESC;
By running queries you agree to the Cloud Services Terms of Use and you irrevocably agree to release your SQL under CC0 License.
All SQL code is licensed under CC0 License.

Checking query status...