Поиск в нескольких столбцах - PullRequest
1 голос
/ 24 июля 2011

Имея следующую схему таблицы:

id | english_name | russian_name | year
---------------------------------------
 5 |   The Book   |    Kniga     | 2008

и заданный ввод: Kniga 2008;

Возможно ли воспроизвести следующие шаги?

  • Поиск russian_name для точного соответствия.Если найдено совпадение, верните строку;
  • Если совпадений нет, найдите ТОЧНЫЕ СООТВЕТСТВИЯ english_name.
  • Если совпадений не найдено, как в следующем случае (входные данные Kniga 2008),попробуйте найти среди столбцов и посмотреть, есть ли какая-либо комбинация столбцов совпадают.В данном конкретном случае russian_name и year будут совпадать.
  • Игнорировать такие символы, как -, /, :, поэтому, если задан ввод: The Book / Kniga 2008 или The Book : 2008,результаты должны все еще содержать строку выше.

1 Ответ

2 голосов
/ 24 июля 2011

Это не красиво, но:

SELECT * FROM books WHERE russian_name = ? OR english_name = ? OR CONCAT(russian_name, ' ', year) LIKE ? OR CONCAT(english_name, ' ', year) LIKE ?

где в строке запроса указываются первые два знака вопроса, а во втором и третьем -:

'%' . str_replace ( ' ', '%', $query ) . '%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...