|
|
|
| Доброе время суток уважаемые форумчане, подскажите как решить следующую задачу:
Есть поле поиска, в котором пользователь пишет через пробел несколько слов. Через AJAX вся строка летит на сервер и обрабатывается следующим образом:
1) Удаляются пробелы методами php
2) Создается массив вида ('иван', 'петрович');
Есть в базе данных 3 поля: имя фамилия и отчество,по которым ищется.
Kак корректно составить запрос?
Нашелся человек с совпадающими тремя полями ФИО
При том если написать Иван Коз - тоже нашлись все Иваны Козловы
Пока идея такова:
Нужно написать WHERE name like '%$a[0]%' or name like '%$a[1]%' .... по количеству элементов в массиве
и так же одновременно WHERE surname like '%$a[0]%' or surname like '%$a[1]%'
и
WHERE middlename like '%$a[0]%' or surname like '%$a[1]%'
Вот как это реализовать? | |
|
|
|
|
|
|
|
для: h0x
(30.01.2013 в 16:57)
| | Т.е. Вы хотите, чтобы каждое слово искалось по вссем трем полям?
Объеденив Ваши условия будет так:
/*<? любое из слов должно присутствовать в каждом поле */
SELECT * FROM tbl
WHERE ( name like '%слово1%' OR name like '%слово2%' )
AND ( surname like '%слово1%' OR surname like '%слово2%' )
AND ( middlename like '%слово1%' OR surname like '%слово2%' )
| Но логичнее, по-моему, так:
/*<? каждое введенное слово должно присутствовать в любом поле */
SELECT * FROM tbl
WHERE ( name like '%слово1%' OR surname like '%слово1%' OR middlename like '%слово1%' )
AND ( name like '%слово2%' OR surname like '%слово2%' OR middlename like '%слово2%' )
| или так:
/*<? любое слово должно присутствовать в любом поле */
SELECT * FROM tbl
WHERE name like '%слово1%' OR surname like '%слово1%' OR middlename like '%слово1%'
OR name like '%слово2%' OR surname like '%слово2%' OR middlename like '%слово2%'
|
| |
|
|
|