Создаем VIEW для сводки страниц
VIEW — это сохраненный запрос. Он удобен для HTML-учебника и отчетов: логика хранится один раз.
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;
DROP VIEW IF EXISTS v_page_overview; — Удаляет старый VIEW, чтобы его можно было создать заново без ошибки.пустая строка — Пустая строка отделяет один смысловой блок кода от другого, чтобы код легче читался.CREATE VIEW v_page_overview AS — Создает сохраненный запрос, к которому можно обращаться как к таблице.SELECT p.page_id, — Начинает запрос и перечисляет колонки или выражения, которые нужно вывести.p.url, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.p.title, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.p.page_type, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.p.index_status, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.cp.status_code, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.cp.word_count, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.cp.response_ms, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.COALESCE(s.impressions, 0) AS impressions, — Подставляет запасное значение, если в данных встретился NULL.COALESCE(s.clicks, 0) AS clicks, — Подставляет запасное значение, если в данных встретился NULL.COALESCE(s.ctr, 0) AS ctr, — Подставляет запасное значение, если в данных встретился NULL.COALESCE(s.avg_position, 0) AS avg_position — Подставляет запасное значение, если в данных встретился NULL.FROM pages AS p — Указывает основную таблицу или источник данных для запроса.LEFT JOIN crawl_pages AS cp ON cp.page_id = p.page_id — Соединяет текущие данные с другой таблицей по условию ON.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-команды.