Buenos días,
Santiago muchas gracias, esta solución funcionó bien. Un saludo. Martha -----Mensaje original----- De: [email protected] [mailto:[email protected]] En nombre de Santiago G Martí Enviado el: jueves, 25 de febrero de 2010 18:57 Para: forum.help400 Asunto: Re: Consulta Update SQL Importancia: Baja Suponiendo que tanto ClaveA como ClaveB son las respectivas claves primarias o únicas de los archivos, la solución sería: UPDATE archivoA set campo1 = (select valor1 from archivoB where archivoA .clavea = archivoB.claveb ) WHERE EXISTS (select * from archivoB where archivoA .clavea = archivoB.claveb ) El problema que tiene la instrucción número 5 es que en la subselección se incluye una unión de ficheros con lo que la condición WHERE no hace referencia al registro que se pretende actualizar, sino a uno de los ficheros de la unión, con lo que para cada registro se obtiene un montón de registros (toda la unión). La cláusula WHERE EXISTS te protege de lo que ocurre en la instrucción 4, que existe algún registro en ArchivoA que no tiene correspondencia en ArchivoB. Finalmente, una recomendación: Por claridad, yo prefiero utilizar ALIAS para los nombres de los ficheros, ya que clarifican mucho la instrucción: UPDATE archivoA AA set campo1 = (select valor1 from archivoB BB where AA .clavea = BB.claveb ) WHERE EXISTS (select * from archivoB CC where AA.clavea = CC.claveb ) Saludos, --------------------------- Santiago Martí Dusen, S.A. --------------------------- "CELUGO - Informatica" <informat...@celu Para go.es> "forum.help400" Enviado por: <[email protected]> forum.help400-bou cc [email protected] os.es Asunto Re: Consulta Update SQL 25/02/2010 18:14 Por favor, responda a "forum.help400" <forum.help...@li stas.combios.es> Hola, Martha. Para mí que la solución es la del punto 5, pero como en ArchivoB tienes más de un registro con el que actualizar en el ArchivoA deberías acotar la selección para que sólo te devolviera 1 registro. Un saludo. ----- Original Message ----- From: Gomez Covezdy, Martha To: forum.help400 Sent: Thursday, February 25, 2010 4:56 PM Subject: RE: Consulta Update SQL Buenas tardes, Hemos intentado las instrucciones siguientes pero para todas el sistema responde error: 1. update archivoA inner join archivoB on archivoA.ValorA = archivoB.ValorB set archivoA.valorviejo = archivoB.Valornuevo ** Error: "Column qualifier or table archivoB undefined." 2. update archivoA set archivoA.valorviejo = archivoB. Valornuevo from archivoA as a inner join archivoB as b on a. clavea = b. claveb ** Error: "Column qualifier or table archivoB undefined." 3. update archivoA set archivoA.valorviejo =(select archivoB.Valornuevo from archivoB where archivoA .clavea = archivoB.claveb) ** Error: "Null values not allowed in column or variable archivoA.valorviejo " 4. update archivoA set archivoA.valorviejo = (select value(archivoB.ValorB, 0) from archivoB where archivoA .clavea = archivoB.claveb) ** Error: "Null values not allowed in column or variable archivoA.valorviejo " 5. UPDATE archivoA set campo1 =(select valor1 from archivoB, archivoA where archivoA .clavea = archivoB.claveb ) ** Error: "Result of SELECT more than one row" La Version de OS400 que usamos es: V5R4M5. Gracias Un saludo. Martha De: [email protected] [mailto:[email protected]] En nombre de Yosia, Marcelo Enviado el: jueves, 25 de febrero de 2010 15:12 Para: 'forum.help400' Asunto: RE: Consulta Update SQL Importancia: Baja Prueba con esta sentencia update archivo a set campo1 = (select value(b.campo1, 0) from archivo b where a.clave=b.clave), campo2 = 0, campo3 = (select value(c.campo1, 0) from archivo c where a.clave=c.clave) where condicion En el ejemplo campo1 y campo3 son actualizados con una subconsulta sobre otro archivo que debe retornar 1 solo registro: Si retorna más de un registro da error. Si retorna 0 registros devuelve null y da error al asignar null a un campo que no lo permite (la instrucción value evita eso forzando el cero). Marcelo Yosia www.mercantilandina.com.ar -----Mensaje original----- De: [email protected] [mailto:[email protected]]en nombre de Gomez Covezdy, Martha Enviado el: Jueves, 25 de Febrero de 2010 10:58 a.m. Para: [email protected] Asunto: Consulta Update SQL Importancia: Alta Por favor orientarnos sobre cómo poder hacer en AS400 con SQL un UPDATE de un campo de un fichero desde un campo de otro fichero. Hemos intentado la siguiente sintaxis pero presenta error: update archivoA inner join archivoB on archivoA.ValorA = archivoB.ValorB set archivoA.valorviejo = archivoB. valornuevo Error: Keyword INNER not expected. Gracias Un saludo. Martha ____________________________________________________ © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es ---------------------------------------------------- Para darte de baja visita la siguente URL: http://listas.combios.es/mailman/listinfo/forum.help400 ____________________________________________________ © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es ---------------------------------------------------- Para darte de baja visita la siguente URL: http://listas.combios.es/mailman/listinfo/forum.help400 ____________________________________________________ © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es ---------------------------------------------------- Para darte de baja visita la siguente URL: http://listas.combios.es/mailman/listinfo/forum.help400
____________________________________________________ © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es ---------------------------------------------------- Para darte de baja visita la siguente URL: http://listas.combios.es/mailman/listinfo/forum.help400

