Gracias Luis, Esa es la solución que veníamos utilizando. Un saludo,
On Tue, Mar 9, 2021 at 3:21 PM Luis Alfredo Bregoli <[email protected]> wrote: > Esta usaría Yo. > > UPDATE PROJECT P > > SET P.LOCATION = (*SELECT* D.LOCATION > > FROM DEPARTMENT D > > WHERE P.DEPTNO = D.DEPTNO) > > > Pero DEPARTMENT , No puede tener 2 Registros con el mismo DEPNO, el MERGE > nunca lo Use y quizás sea la solución > > . > > > > Cordialmente: > Luis A Bregoli > Tel. 15-4970-9897 > email: [email protected] > Sitio: http://www.bregoliluis.com/ <https://www.bregoliluis.com/> > <http://www.prosyde.com> > > > > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > Libre > de virus. www.avast.com > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > <#m_-2957706617286176072_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > > El lun, 8 mar 2021 a las 14:14, Carlos (<[email protected]>) > escribió: > >> Hola >> >> La "norma" es la de SQL de DB2 de i; que dicho así parece una tonteria (y >> seguramente lo sea 😁) pero lo que quiero decir es que es SQL standard con >> adaptaciones para i. El ejemplo a lo mejor lo has sacado de la página de >> DB2 de Z, que también tiene sus diferencias. >> >> En tu sentencia funcionaría con un segundo SELECT (quizá con DISTINCT o >> alguna cláusula para que solo devuelva una fila) >> >> UPDATE PROJECT P >> >> SET P.LOCATION = (*SELECT* D.LOCATION >> >> FROM DEPARTMENT D >> >> WHERE P.DEPTNO = D.DEPTNO); >> >> >> Para buscar en Google yo suelo añadir iseries a las búsquedas para >> acotar, aunque no siempre sirve. >> >> Y como referencia, tienes la documentación de IBM donde también puedes >> encontrar ejemplos (sobre todo en el de programación): >> >> >> https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/db2/rbafzintro.htm >> >> >> https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_74/sqlp/rbafykickoff.htm >> >> Saludos >> Carlos >> >> >> El 8/3/21 a las 16:45, estela retes escribió: >> >> Muchas gracias Sergio por tu aclaración. >> Estudiaremos la manera de realizar el merge, ya que parece bastante útil >> y las casuísticas en las que se puede utilizar son muy comunes. >> >> Aún así,me gustaría saber cual es la "norma" de SQL en la que deberíamos >> basarnos en casos como estos, ya que es bastante complicado encontrar ayuda >> que "funcione" googleando sin saber qué debemos tener en cuenta de base. >> >> El ejemplo lo hemos sacado de la web de IBM de DB2 pero NO de DB2 for i, >> y es por eso que nos lleva a error. Tampoco debemos basarnos en la norma de >> SQL server /my sql o cualquier otro, y estaría bien si alguien nos pudiese >> aclarar de dónde partir a la hora de ver la sintaxis o los ejemplos. >> >> Lo dicho, mil gracias! >> >> >> >> On Mon, Mar 8, 2021 at 4:36 PM Sergio Martinez Roig < >> [email protected]> wrote: >> >>> Hola Estela, >>> >>> >>> >>> Para ejecutar este tipo de sentencias update de una tabla en función de >>> otra debes utilizar la estructura MERGE, en el ejemplo que pones tú sería >>> de la siguiente manera: >>> >>> >>> >>> MERGE INTO PROJECT AS P >>> >>> USING (SELECT DEPTNO, LOCATION FROM DEPARTMENT) AS D >>> >>> ON P.DEPTNO = D.DEPTNO >>> >>> WHEN MATCHED THEN UPDATE SET P.LOCATION = D.LOCATION; >>> >>> >>> >>> Hasta dónde yo se un UPDATE no acepta el FROM. Otra cosa que no tengo >>> clara es a partir de que reléase está disponible el MERGE. >>> >>> >>> >>> En este artículo te explica bien el MERGE: >>> >>> >>> >>> https://medium.com/@esteeeban10/merge-en-db2-as400-3ab986c36bef >>> >>> >>> >>> Un saludo >>> >>> Sergio Martínez >>> >>> Estibarna, CPE >>> >>> >>> >>> *De:* Forum.help400 <[email protected]> *En >>> nombre de *estela retes >>> *Enviado el:* lunes, 8 de marzo de 2021 16:16 >>> *Para:* forum.help400 <[email protected]> >>> *Asunto:* Norma SQL DB2 en V7R4 >>> >>> >>> >>> Buenas a todos, >>> >>> >>> >>> Disculpad por lo básico de la pregunta. >>> >>> >>> >>> Estamos intentando ejecutar unas sentencias SQL de tipo UPDATE desde el >>> Rational (desde STRSQL nos ocurre lo mismo), similares a ésta de un manual >>> de IBM: >>> >>> >>> >>> UPDATE PROJECT P >>> >>> SET P.LOCATION = D.LOCATION >>> >>> FROM DEPARTMENT D >>> >>> WHERE P.DEPTNO = D.DEPTNO; >>> >>> >>> >>> Estamos obteniendo el error: >>> >>> [SQL0199] Palabra clave FROM inesperada. Símbolos válidos: USE SKIP WAIT >>> WITH FETCH LIMIT ORDER WHERE OFFSET. >>> >>> >>> >>> Entendemos que no nos está permitiendo poner una cláusula FROM en una >>> UPDATE y nos gustaría saber porqué nos está rechazando esta sintaxis y en >>> qué "norma" de SQL debemos basarnos a la hora de construir dichas >>> sentencias. >>> >>> >>> >>> Gracias a todos y un saludo. >>> >>> >>> >>> -- >>> >>> Estela >>> Este mensaje contiene información confidencial dirigida al destinatario >>> del mismo. Las opiniones expresadas pertenecen al autor y no necesariamente >>> a ESTIBARNA. Si Ud. recibe este mensaje por error, se ruega informe >>> inmediatamente al remitente del mismo. Queda prohibido el uso, divulgación, >>> copia o distribución a terceros de la información incluida en este mensaje. >>> ____________________________________________________ >>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >>> Forum.Help400 © Publicaciones Help400, S.L. >> >> >> >> -- >> Estela >> >> ____________________________________________________ >> �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >> Forum.Help400 � Publicaciones Help400, S.L. >> >> ____________________________________________________ >> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) >> Forum.Help400 © Publicaciones Help400, S.L. > > ____________________________________________________ > Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) > Forum.Help400 © Publicaciones Help400, S.L. -- Estela
____________________________________________________ �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones Help400, S.L.
