2013-07-23 4 views
0

У меня есть таблица клиентов с именами для имени и фамилии плюс другие данные.mysql поиск по объединенным полям

В форме пользователь может ввести поиск, который у меня есть, но только для уникальных полей, например, для поиска john по любому имени или фамилии. Это все работает нормально

Однако я не знаю, как искать, входит ли пользователь в john smith, который был бы комбинацией из двух полей. Как я могу выполнить этот поиск с моей текущей структурой данных?

Ive пытался добавить поле в выберите заявление с помощью:

Concat_ws (' ', firstname, lastname) as fullname 

Но я не могу использовать, где на этом порожденного поля и выдает ошибку

Должен ли я создать новое поле, чтобы содержать полное имя?

Спасибо

ответ

1

Вы не можете использовать псевдонимы, где условия. вместо этого используйте полную функцию

например.

where Concat_ws(' ', firstname, lastname) like '%<your search>%' 

Но, да, это хорошая идея, чтобы создать новое поле для оптимизации производительности
И убедитесь, что вы не имеете пробел после имени функции

+0

спасибо. У меня был синтаксис неправильный, как вы говорите для столбца побережья. Работает сейчас в правильном месте. Я также рассмотрю полный текст. Спасибо – Ray

1

Это зависит от комбинации полей, которые вы хотите. Для вашего примера firstname = 'john' AND lastname='smith' выполнит эту работу, но, вероятно, не то, что вам нужно.

Лучшим решением было бы использовать fulltext search.

+0

Спасибо. Я также изучу полнотекстовый поиск – Ray

Смежные вопросы