TroL929
@TroL929
веб-программист

Как найти схожие записи в БД по частичному вхождению?

Добрый час Тостеровщики. Есть один важный вопрос, прошу с ним помочь.
Есть база клиентов. С колонками Фамилия, Имя, Отчество, Телефон(уникальный), Город.
Как мне найти записи если например фамилия+имя совпадают, или телефон+город или фамилия+телефон. Так же с учетом что имя или отчество может быть не заполнено.

И так же надо будет определить вероятность совпадения. Например если нашли клиента по номеру телефона, то это высокое совпадение. Если только по фамилии то низкое совпадение. При полном совпадении ФИО идет среднее совпадение, а вот если ФИО+город совпал то высокое.

Для визуальности составлю списоком
  • Телефон - высокое совпадение
  • Фамилия - низкое совпадение
  • Фамилия+Имя+Отчество - среднее совпадение
  • Фамилия+Имя+Отчество+Город - Высокое совпадение
  • Вопрос задан
  • 553 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если нужно частичное совпадение по строкам при полном совпадении отдельных полей, то примерно так (8 и 2 - веса соответствующих полей):
SELECT *
  FROM `table`
  ORDER BY (`phone` = :phone) * 8 + 
           (`lastName` = :lastName) * 2 + 
           (`firstName` = :firstName) * 2 + 
           (`middleName` = :middleName) * 2 + 
           (`city` = :city)
    DESC

Но запрос будет небыстрый, без использования индексов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы