я делаю синхронизацию данных о размещении внешней API и охраняю данные о каждом размещении и Вашей локализации. У меня есть пластина Towns, где я помещаю город или поселок, в которой находится каждое размещение, и связывая их. Случай состоит, в том, что обновив 10000 типов размещения, я понимаю, что не всегда приходит имя города того же способа, и мне удваиваются города таким образом: - Benalmádena - Benalmadena - Benalmádena-Малага - Бенальмадена-ма - Benalmadena-Малага
Случай состоит в том, что мне хотелось бы делать консультацию в эту пластину, где я достал значения, которые содержат другое значение. Это состоит, (WHERE ямс LIKE "%Benalmadena %") но равно как Benalmadena, в том, чтобы делать это со всеми значениями пластины искать эти совпадения.
Кто-то может говорить мне, как делать эту консультацию SQL?
И с другой стороны: есть какой-то способ, которого, реализовав поиски в пластине TOWNS, чтобы видеть, существует ли запись, не имелась бы в виду тильда? Я это решил реализовывая поиски LIKE
$town = $em->getRepository('App:Town')->createQueryBuilder('t')
->where('t.name like :name')
->setParameter('name', trim($twnN));
$town->getQuery()->getResult();
EDIT:
Структура моей пластины TOWNS - следующая:
Пойдите: int | ямс: string | lat: string | long: string
И структура моего trabla Accommodations: ID:int | ямс: string | town_id: int
Это какие-то из дублированных записей поля "ямса" моей пластины Towns:
- Benalmádena
- Benalmadena
- Benalmádena-малага
- Benalmádena-ma
- Benalmadena-малага
То, что мне понравилось бы, состоит в том, чтобы пробегать каждую из записей этой пластины и искать записи, которые содержали бы этот string. Например, если я оказываюсь все записи вовлеченными в одну изменчивый $towns и делаю foreach SQL это было бы так:
$towns = $this->getAllTowns();
foreach($towns as $k => $t){
$sql = "Select * FROM TOWN WHERE name like '%".$t->getName()."%'";
}
Из-за каждой записи, я получаю все записи, которые содержат это слово. Не, если это возможное с консультацией MySQLi.
Большое спасибо.
В ответе в:
Вїhay какой-то способ, которого, реализовав одну bГєsqueda в таблице TOWNS, чтобы видеть, существует ли реестр, не имелась бы в виду тильда?
ты Мог бы использовать presentadores del juego de caracteres
вместе с COLLATE
SELECT *
FROM Towns
WHERE name LIKE _utf8'%Benalmádena%' COLLATE utf8_general_ci;
В ответе в:
я gustarГ, - чтобы делать консультацию в эту таблицу, где я достал стоимость, которая содержит другую стоимость. Это состоит, (WHERE ямс LIKE "%Benalmadena %") но равно как Benalmadena, в том, чтобы делать это со всей стоимостью таблицы искать эти совпадения.
PodГ-Схвати использовать EXISTS()
, чтобы искать, если существует по крайней мере отличный реестр, если сам и с именем similiar.
SELECT *
FROM Towns AS T
WHERE EXISTS (
SELECT A.id
FROM Towns AS A
WHERE A.id != T.id
AND A.name LIKE CONCAT('%', CONVERT(T.name USING utf8), '%')
LIMIT 1
);