Когда вы используете UNIONs
таким образом, добавьте столбец определителя, просто константу, к каждой таблице, чтобы вы знали, из какой таблицы происходит каждая запись.
SELECT source, id, title, score
FROM
(SELECT 'pages' AS source, id, title, MATCH(title) AGAINST(:search_term IN BOOLEAN MODE) AS score
FROM pages WHERE MATCH(title) AGAINST(:search_term IN BOOLEAN MODE)
UNION
SELECT 'agenda' AS source, id, title, MATCH(title) AGAINST(:search_term IN BOOLEAN MODE) AS score
FROM agenda WHERE MATCH(title) AGAINST(:search_term IN BOOLEAN MODE) UNION
SELECT 'news' AS source, id, title, MATCH(title) AGAINST(:search_term IN BOOLEAN MODE) AS score
FROM news WHERE MATCH(title) AGAINST(:search_term IN BOOLEAN MODE)
) ORDER BY score ASC
Вам также нужно будет обернуть его от SELECT
до ORDER BY
по всему комбинированному набору, так, как вы это сделали, порядок будет только на последнем столе, я думаю. Изменение атрибута title
также не является хорошей идеей, поскольку имена столбцов должны быть одинаковыми для UNION
, или они объединят их с первым найденным заголовком, или просто очистят имя столбца.