Как я могу сделать ‘% search%’ в двух таблицах в двух определенных столбцах?

У меня есть две таблицы:

Таблица 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>

По сути, я хочу создать поле поиска, которое будет искать в этих двух конкретных полях таблиц.

0

Решение

Я не знаю, почему вам нужен один запрос, но я постараюсь дать вам представление о том, как его выполнить.

Вы не указываете, какой результат вы хотите, так что вот мой выстрел в том, что вы могли бы хотеть. Я хочу отметить, что 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 лайк:

  • таблица: table1, id: 5, имя: Дейв Джонс, псевдоним: Popeye
  • table: table1, id: 3, имя: Дэвид Тест, псевдоним: Дейв
  • table: table2, id: 5, имя: CompanyDave, псевдоним: Petersons
  • table: table2, id: 3, имя: MyCompany, псевдоним: Davestest

Больше информации о UNION на http://dev.mysql.com/doc/refman/5.0/en/union.html

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]