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.

Reply via email to