municipios_hab.zip# Programación de bases de datos
DROP TABLE tmp_municipios;
CREATE TABLE tmp_municipios as
SELECT distinct SUBSTRING(cp.codigo,1,2),
SUBSTRING_INDEX(limpia_articulos(mh.nombre),"/",1),
SUBSTRING_INDEX(limpia_articulos(m.nombre),"/",-1),
mh.total, m.id fk_id
FROM municipios_hab2025 mh left JOIN municipios m
ON SUBSTRING_INDEX(limpia_articulos(mh.nombre),"/",1)=
SUBSTRING_INDEX(limpia_articulos(m.nombre),"/",-1) or
SUBSTRING_INDEX(limpia_articulos(mh.nombre),"/",1)=
SUBSTRING_INDEX(limpia_articulos(m.nombre),"/",1) or
SUBSTRING_INDEX(limpia_articulos(mh.nombre),"/",-1)=
SUBSTRING_INDEX(limpia_articulos(m.nombre),"/",-1)
left JOIN localidades l ON m.id = l.fk_municipio
LEFT JOIN cod_localidades cl ON l.id = cl.fk_localidad
LEFT JOIN cod_postales cp ON cl.fk_cod_postal = cp.id
WHERE
m.id IS null
SELECT distinct
mh.nombre, m.nombre, mh.total, m.id
FROM municipios_2025 mh left JOIN municipios m
ON mh.nombre = m.nombre OR mh.nombre = m.nombre2
OR mh.nombre = m.nombre3 OR mh.nombre = m.nombre4
OR mh.nombre2 = m.nombre OR mh.nombre2 = m.nombre2
OR mh.nombre2 = m.nombre3 OR mh.nombre2 = m.nombre4
OR mh.nombre3 = m.nombre OR mh.nombre3 = m.nombre2
OR mh.nombre3 = m.nombre3 OR mh.nombre3 = m.nombre4
OR mh.nombre4 = m.nombre OR mh.nombre4 = m.nombre2
OR mh.nombre4 = m.nombre3 OR mh.nombre4 = m.nombre4 OR
levenshtein(mh.nombre,m.nombre)<2
left JOIN localidades l ON m.id = l.fk_municipio
LEFT JOIN cod_localidades cl ON l.id = cl.fk_localidad
LEFT JOIN cod_postales cp ON cl.fk_cod_postal = cp.id
WHERE mh.fk_id IS NULL AND m.id IS null
CREATE DEFINER=`root`@`localhost` FUNCTION `limpia_articulos`(
`texto` VARCHAR(250)
)
RETURNS varchar(250) CHARSET utf8mb4
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE MiTexto VARCHAR(250);
SET MiTexto = texto;
SET MiTexto = LOWER(MiTexto);
if INSTR(MiTexto,' del ')>0 then
SET MiTexto = REPLACE(MiTexto, ' del ', ' ');
ELSE if INSTR(Mitexto,' de ')>0 then
SET MiTexto = REPLACE(MiTexto, ' de ', ' ');
ELSE if INSTR(Mitexto,' la ')>0 then
SET MiTexto = REPLACE(MiTexto, ' la ', ' ');
ELSE if INSTR(Mitexto,' el ')>0 then
SET MiTexto = REPLACE(MiTexto, ' el ', ' ');
ELSE if INSTR(Mitexto,' el ')>0 then
SET MiTexto = REPLACE(MiTexto, 'la ', ' ');
ELSE if INSTR(Mitexto,' el ')>0 then
SET MiTexto = REPLACE(MiTexto, 'las ', ' ');
ELSE if INSTR(Mitexto,"o ")>0 then
SET MiTexto = REPLACE(MiTexto, "o ","");
END if;
END if;
END if;
END if;
END if;
END if;
end if;
SET MiTexto = REPLACE(MiTexto, 'el ', '');
SET MiTexto = REPLACE(MiTexto, 'a ', '');
SET MiTexto = REPLACE(MiTexto, 'as ', '');
SET MiTexto = REPLACE(MiTexto, 'los ', '');
SET MiTexto = REPLACE(MiTexto, 'les ', '');
SET MiTexto = REPLACE(MiTexto, 'os ', '');
SET MiTexto = REPLACE(MiTexto, ", l'","");
SET MiTexto = REPLACE(MiTexto, "l'","");
SET MiTexto = REPLACE(MiTexto, ", la","");
SET MiTexto = REPLACE(MiTexto, ", el","");
SET MiTexto = REPLACE(MiTexto, ", los","");
SET MiTexto = REPLACE(MiTexto, ", a","");
SET MiTexto = REPLACE(MiTexto, ", o","");
SET MiTexto = REPLACE(MiTexto, ", les","");
SET MiTexto = REPLACE(MiTexto, ", es","");
SET MiTexto = REPLACE(MiTexto, ", sa","");
SET MiTexto = REPLACE(MiTexto, "els ","");
SET MiTexto = REPLACE(MiTexto, "ss","s");
SET MiTexto = REPLACE(MiTexto, ", ses","");
RETURN TRIM(MiTexto);
END