За последние 24 часа нас посетили 18442 программиста и 1641 робот. Сейчас ищут 1745 программистов ...

Запрос на поиск

Тема в разделе "MySQL", создана пользователем Vladislav_Yushkin, 22 июл 2009.

  1. Vladislav_Yushkin

    Vladislav_Yushkin Активный пользователь

    С нами с:
    19 июн 2007
    Сообщения:
    71
    Симпатии:
    0
    Я пишу следующий запрос

    SELECT * FROM table WHERE field LIKE 'искомая фраза'
    для поиска по полю field.

    Допустим у нас поле field содержит следующие значения
    Иванов Петр Сергеевич
    Морозов Иван Алексеевич
    Петров Петр Петрович

    если в запросе вместо 'искомая фраза' мы напишем 'Петр Петрович", то в результате будет найдена одна строка.

    Теперь вопрос.
    Как изменит запрос, что бы при запросе 'Петров Петрович', мы тоже получили искомый результат.
     
  2. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    может, стоит нормализировать БД?
     
  3. Vladislav_Yushkin

    Vladislav_Yushkin Активный пользователь

    С нами с:
    19 июн 2007
    Сообщения:
    71
    Симпатии:
    0
    А при чем здесь - нормализация БД.
    У меня конкретный вопрос, по поиску.
     
  4. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    вот и ответ - нормализация базы данных.
    нормализируешь бд, где у тебя будет три поля SurnameID, FirstNameID, LastNameID, а они будут ссылаться на соответствующие имена и фамилии в соответствующих таблицах. По базам и выполняешь поиск. И поиск будет быстрее и легче и вообще. Ну это, конечно, если у тебя какая-то очень большая база имен.

    Альтернативный вариант - делишь 'искомую фразу' в пхп функцией explode по пробелам, а потом делаешь что-то типа:
    [sql]SELECT * FROM table WHERE field LIKE '%искомая%' AND LIKE '%фраза%' [/sql]