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] <mailto:[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
<https://medium.com/@esteeeban10/merge-en-db2-as400-3ab986c36bef>
Un saludo
Sergio Martínez
Estibarna, CPE
*De:* Forum.help400 <[email protected]
<mailto:[email protected]>> *En nombre de
*estela retes
*Enviado el:* lunes, 8 de marzo de 2021 16:16
*Para:* forum.help400 <[email protected]
<mailto:[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
<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.