Hola a todos,
Cita:
Empezado por Angel.Matilla
Otra cosa, y perdón por el barullo de mensajes: Me valdría peferctamente al revés:
Código PHP:
SELECT CODIGO, NOMBRE, CPOSTAL
FROM POBLACION
WHERE SUBSTRING(CPOSTAL FROM 1 FOR 2) NOT IN (SELECT CAST(CODIGO AS VARCHAR(2))
FROM PROVINCIA WHERE CODIGO > 0 AND CODIGO < 99) ORDER BY CPOSTAL, NOMBRE, CODIGO
Pero este query me saca todos los registros de la tabla (más de 58.000).
|
prueba con:
Código PHP:
SELECT CODIGO, NOMBRE, CPOSTAL
FROM POBLACION
WHERE SUBSTRING(CPOSTAL FROM 1 FOR 2) NOT IN (SELECT LPAD(CAST(CODIGO AS VARCHAR(2)), 2, '0') FROM PROVINCIA WHERE CODIGO > 0 AND CODIGO < 99) ORDER BY CPOSTAL, NOMBRE, CODIGO
Eso esta pasando por que al convertir un código de provincia de un solo dígito, ejemplo Barcelona si utilizas los dos primeros dígitos del código postal correspondería a '08' y el código numérico se queda solo como 8, al aplicar solamente
CAST(CODIGO AS VARCHAR(2)) obtienes '8' que no es igual a '08' con el LPAD se soluciona
Un saludo