Я бы просто union all
вашу pages
таблицу с другой таблицей (допустим, она называется more_pages
).
Конструкция WITH
действительно подходит для таких проблем, но, к сожалению, MySQL делаетпока не поддерживаю.Самая элегантная альтернатива, которую я мог бы предложить, - создать представление для инкапсуляции этого объединения:
CREATE VIEW all_pages AS
SELECT * FROM pages
UNION ALL
SELECT * FROM more_pages
SELECT *,
MATCH(title, content_plain_text) AGAINST ('$searchTerm') AS score,
(MATCH(title, content_plain_text) AGAINST ('$searchTerm') / maxScore) AS normalisedScore
FROM all_pages,
(SELECT MAX(MATCH(title, content_plain_text) AGAINST ('$searchTerm')) AS maxScore
FROM all_pages) maxScoreTable
WHERE MATCH(title, content_plain_text) AGAINST ('$searchTerm')
AND active = 1
ORDER BY score DESC