Использование:
SELECT d.title
FROM DOWNLOAD d
WHERE d.title LIKE '%$search%'
UNION
SELECT n.title
FROM NEWS n
WHERE n.title LIKE '%$search%'
OR n.text LIKE '%$search%'
Отправленный вами запрос создает декартово произведение, поскольку в предложении WHERE нет критериев JOIN. Этот запрос вернет список отдельных значений title
на основе записей в любой таблице. Если бы не было запроса на возврат дубликатов, я бы использовал UNION ALL
.
Как узнать, из какого результата таблицы?
Не зная больше о таблицах, проще всего было бы определить вычисляемый / производный столбец со статическими значениями:
SELECT d.title,
'DOWNLOAD' AS type
FROM DOWNLOAD d
WHERE d.title LIKE '%$search%'
UNION
SELECT n.title,
'NEWS' AS type
FROM NEWS n
WHERE n.title LIKE '%$search%'
OR n.text LIKE '%$search%'
В столбце type
указано, из какой таблицы получена запись. Однако это поднимает потенциальную проблему -
Существует вероятность того, что в обеих таблицах одинаковый заголовок - набор результатов будет выглядеть следующим образом:
TITLE TYPE
----------------------
abc_title DOWNLOAD
abc_title NEWS