За последние 24 часа нас посетили 221748 программистов и 2189 роботов. Сейчас ищут 1652 программиста ...

Выборка из БД по ключевому слову

Тема в разделе "PHP для новичков", создана пользователем dembi, 17 ноя 2008.

  1. dembi

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

    С нами с:
    21 июл 2008
    Сообщения:
    78
    Симпатии:
    0
    Добрый День, Всем!

    У меня есть БД по номерам телефонов.
    Мне нужно сделать быстрый поиск по ключевому слову.

    То есть, есть таблица list, в которой есть следующие столбцы: country, city, tel, last name, comment etc.

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

    Обычный запрос такого вида не работает тут:

    Select * from list where country like ‘%$key%’ or city like ‘%$key%’ or tel like ‘%$key%’ or last_name like ‘%$key%’ or comment like ‘%$key%’

    Я пробовал еще такой вариант:
    $rezul = mysql_query (Select * from list where country like ‘%$key%’);
    $resul_final = mysql_fetch_array($rezul);

    Вывожу все в цикле:

    $rezul = mysql_query (Select * from list where city like ‘%$key%’);
    $resul_final = mysql_fetch_array($rezul);

    Вывожу все в цикле:

    Но тут у меня появляются дублирующие записи.

    Подскажите, пожалуйста, как это можно сделать?
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    FULLTEXT ?
    Ps/ А чё нужно то? :)
     
  3. GudGuy

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

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    Select * from list where country like ‘%$key%’ or city like ‘%$key%’ or tel like ‘%$key%’ or last_name like ‘%$key%’ or comment like ‘%$key%’ GROUP_BY `id` не подходит?
     
  4. Vincent

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

    С нами с:
    30 окт 2008
    Сообщения:
    12
    Симпатии:
    0
    Что бы записи были уникальны после слова SELECT нужно указать ключевое слово - DISTINCT. А в целом конструкцию с LIKE '%$var%' лучше не использовать ибо в такое случае не используется индекс для поиска и соответсвенно искать будет долго. Можно конечно все поля проиндексировать для полнотекстового поиска, либо создать еще одно поле куда будут входить все значения полей и уже по нему сделать fulltext индекс и по нему опять же искать.
     
  5. GudGuy

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

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    Vincent
    здесь вообще странно. зачем, например, искать название города в поле номера?
    стоит наверное сделать настройку параметров поиска. так оно лучше будет.... а ваш последний вариант мне понравился=)
     
  6. dembi

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

    С нами с:
    21 июл 2008
    Сообщения:
    78
    Симпатии:
    0
    Спасибо большое всем.

    Я так и оставил этот вариант:
    Select * from list where country like ‘%$key%’ or city like ‘%$key%’ or tel like ‘%$key%’ or last_name like ‘%$key%’ or comment like ‘%$key%’

    Так как все равно я его использую этот запроса для быстрого поиска. То есть поиск информации по осуществляться должен был по ключевому слову.
     
  7. dembi

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

    С нами с:
    21 июл 2008
    Сообщения:
    78
    Симпатии:
    0
    Сорри за каламбур. Очень спешил когда писал.

    Так как это запрос используется для быстрого поиска. То есть поиск информации осуществляется по ключевому слову. И как раз получается, если хоть что-то попадает под этот запрос он выводит мне его.