У меня есть две таблицы:
Таблица 1:
ID int auto_increment
имя человека
Личное имя
Таблица 2:
ID int auto_increment
название компании
название компании varchar
Я хочу искать в обеих таблицах по обоим полям (не по идентификатору) только по одному запросу.
Моя поисковая форма выглядит так:
<form method="post" action="">
<input type="text" name="search" />
<button type="submit" title="Pesquisar" class="btn-search"></button>
</form>
По сути, я хочу создать поле поиска, которое будет искать в этих двух конкретных полях таблиц.
Я не знаю, почему вам нужен один запрос, но я постараюсь дать вам представление о том, как его выполнить.
Вы не указываете, какой результат вы хотите, так что вот мой выстрел в том, что вы могли бы хотеть. Я хочу отметить, что LIKE
имеет довольно низкую производительность, поэтому мой код ниже будет работать хуже, чем больше становится БД.
Я не уверен, что это правильный способ сделать это, но что-то вроде этого должно работать:
(SELECT 'table1' AS 'table', id, person_name AS 'name', person_nickname AS 'nickname'
FROM table1
WHERE (person_name LIKE '%search%' OR person_nickname LIKE '%search%'))
UNION
(SELECT 'table2' AS 'table', id, company_name AS 'name', company_nickname AS 'nickname'
FROM table2
WHERE (company_name LIKE '%search%' OR company_nickname LIKE '%search%'))
Это вернет результаты для Search=Dave
лайк:
Больше информации о UNION на http://dev.mysql.com/doc/refman/5.0/en/union.html
Других решений пока нет …