Поиск в нескольких таблицах с разделением результата

Рейтинг: 0Ответов: 1Опубликовано: 07.09.2014

Допустим, есть несколько таблиц, у которых есть похожие поля (не обязательно одноимённые: title, name...). Необходимо сделать выборку вида LIKE %??%, так чтобы в итоге понимать, в какой конкретно таблице найдено значение.

То есть вот такой запрос выводит все найденные строки, но не идентифицирует таблицу:

SELECT title, id AS id_1 FROM tbl_1 WHERE title LIKE %$txt%
UNION     
SELECT title, id AS id_2 FROM tbl_2 WHERE title LIKE %$txt%

То есть даже если в первой таблице будет пусто, а во второй найдено, будет выведен результат, присвоенный tbl_1:

[title] => xxx
[id_2] => 123

Для наглядности:
http://sqlfiddle.com/#!2/126255/2/0

А результат хотелось бы видеть примерно так:

[title] => xxx
[id_1] => null
[id_2] => 123

[title] => xxxzzz
[id_1] => null
[id_2] => 456

[title] => wwwxxx
[id_1] => 1212
[id_2] => null

...

Ответы

▲ 1

В общем, да. Связи нет, но решение придумал. Может, и не идеальное, но работающее:

SELECT title,id,('t_1') AS tbl_name FROM tbl_1 WHERE title LIKE '%$query%'
UNION
SELECT title,id,('t_2') FROM tbl_2 WHERE title LIKE '%$query%'

Теперь в поле tbl_name можно видеть имя таблицы, в которой найдено совпадение. http://sqlfiddle.com/#!2/126255/24/0