Шаг 082. Создаем VIEW для сводки страниц

sqlГлава 7. CTE, VIEW и оконные функции

Что делаем

Создаем VIEW для сводки страниц

Зачем SEO-специалисту

VIEW — это сохраненный запрос. Он удобен для HTML-учебника и отчетов: логика хранится один раз.

Код. Вставьте 1 в 1

DROP VIEW IF EXISTS v_page_overview;

CREATE VIEW v_page_overview AS
SELECT p.page_id,
       p.url,
       p.title,
       p.page_type,
       p.index_status,
       cp.status_code,
       cp.word_count,
       cp.response_ms,
       COALESCE(s.impressions, 0) AS impressions,
       COALESCE(s.clicks, 0) AS clicks,
       COALESCE(s.ctr, 0) AS ctr,
       COALESCE(s.avg_position, 0) AS avg_position
FROM pages AS p
LEFT JOIN crawl_pages AS cp ON cp.page_id = p.page_id
LEFT JOIN page_gsc_summary AS s ON s.page_id = p.page_id;

Построчный разбор: что делает, для чего и как работает

Строка 1: DROP VIEW IF EXISTS v_page_overview; — Удаляет старый VIEW, чтобы его можно было создать заново без ошибки.
Строка 2: пустая строка — Пустая строка отделяет один смысловой блок кода от другого, чтобы код легче читался.
Строка 3: CREATE VIEW v_page_overview AS — Создает сохраненный запрос, к которому можно обращаться как к таблице.
Строка 4: SELECT p.page_id, — Начинает запрос и перечисляет колонки или выражения, которые нужно вывести.
Строка 5: p.url, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 6: p.title, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 7: p.page_type, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 8: p.index_status, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 9: cp.status_code, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 10: cp.word_count, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 11: cp.response_ms, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 12: COALESCE(s.impressions, 0) AS impressions, — Подставляет запасное значение, если в данных встретился NULL.
Строка 13: COALESCE(s.clicks, 0) AS clicks, — Подставляет запасное значение, если в данных встретился NULL.
Строка 14: COALESCE(s.ctr, 0) AS ctr, — Подставляет запасное значение, если в данных встретился NULL.
Строка 15: COALESCE(s.avg_position, 0) AS avg_position — Подставляет запасное значение, если в данных встретился NULL.
Строка 16: FROM pages AS p — Указывает основную таблицу или источник данных для запроса.
Строка 17: LEFT JOIN crawl_pages AS cp ON cp.page_id = p.page_id — Соединяет текущие данные с другой таблицей по условию ON.
Строка 18: LEFT JOIN page_gsc_summary AS s ON s.page_id = p.page_id; — Соединяет текущие данные с другой таблицей по условию ON.

Что должно получиться

Появится view v_page_overview.

Если появилась ошибка

Проверьте, что вы работаете в файле seo_lab_from_zero.db, скопировали блок полностью и не потеряли точку с запятой в конце SQL-команды.