У меня есть mysql db клиентов и обход веб-сайта, на котором были получены все обзоры за последние несколько лет. Теперь я пытаюсь сопоставить эти отзывы с клиентами, чтобы я мог отправлять их по электронной почте. Проблема в том, что сайт обзора позволял им вводить все, что они хотели для имени, поэтому в некоторых случаях у меня есть полное имя и последнее начальное, а в некоторых случаях первое и последнее полное и полное имя. Он также дает приблизительное время, которое было опубликовано, например "1 неделя назад", "6 месяцев назад" и т.д., Которые мы уже перешли к приблизительной дате.
Теперь мне нужно попробовать сопоставить их с клиентами. Кажется, лучший способ - сделать нечеткий поиск по именам, а затем, как только я нахожу все John B%
я ищу тот, у которого дата завершения работы ближе к публикации публикации, естественно, устраняя все, что было опубликовано до завершения работ,
Я собрал небольшой образец данных, где table1 является клиентом, table2 - обзор для сравнения здесь: http://sqlfiddle.com/#!9/23928c/6/0
Сначала я думал о том, чтобы делать date_diff, но потом мне нужно отсортировать по самому низкому числу. Прежде чем заняться этим самостоятельно, я подумал, что спрошу, есть ли у кого какие-то трюки, которые они хотят разделить.
Я использую PHP/Laravel для запроса MySql
Вы можете использовать DATEDIFF
с абсолютными значениями:
ORDER BY ABS(DATEDIFF('date', $calculatedDate)) DESC
Чтобы найти записи, которые соответствуют вашей оценке, являются точными, положительными или отрицательными.