Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/06/2015, 08:46
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Sustituir valores en una columna por otros de una tabla diferente

Bueno, pues doy el tema por solucionado.
No sé si será la mejor forma, pero esta función me ha resuelto la papeleta.

El problema estaba en que en el proyecto real, estoy usando unas tablas de municipios del INE, y resulta que hay algún caso de nombres de municipios repetidos. Para solventar eso, he limitado el select a 1, lo que me hace de forma arbitraria que esa id se asocie al primer municipio con ese nombre en la tabla municipios, pero creo que más no se puede hacer. Algún caso habrá que esté equivocado.

Si tuviera más datos como el CP, ese error se podría solventar, pero no dispongo de él.

Saludos y gracias. Pongo la versión definitiva de la función con el "limit"
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION actualizar_id_mun() RETURNS void AS
  2.         $BODY$
  3.         DECLARE
  4.         x INTEGER;
  5.         BEGIN
  6.         x:=1;
  7.         WHILE x<(SELECT COUNT(*) FROM parcelas) LOOP
  8.         UPDATE parcelas SET id_municipio=(SELECT municipio.id FROM municipio WHERE municipio.nombre=parcelas.municipio LIMIT 1) WHERE parcelas.id=x;
  9.         x:=x+1;
  10.         END LOOP;
  11.         END;
  12.         $BODY$
  13.         LANGUAGE plpgsql VOLATILE
  14.         COST 100;
__________________
Mi calculadora en Qt

Última edición por dehm; 11/07/2015 a las 09:03