Re: Sentencia SQL con WinSQL

2006-06-05 Por tema juancarlos . santos

Hola,

He utilizado esta sentencia y me ha funcionado.

Gracias a todos y un saludo.


Juan Carlos




   
  Santiago G Martí  
   
  <[EMAIL PROTECTED]>Para: 
forum.help400@combios.es  
  Enviado por: cc:  
   
  forum.help400-admin  Asunto:   Re: Sentencia SQL con 
WinSQL  
  @combios.es   
   

   

   
  05/06/2006 09:09  
   
  Por favor, responda   
   
  a forum.help400   
   

   

   




Prueba,

Update  mvxjdtamst.fgledb
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledb.egcono = 100 and mvxjdtamst.fgledb.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = '' and
exists (select * from mvxjdtamst.fgledg where
 mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
 mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
 mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
 mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno)


Dependiendo de si egacdt, egait1, egbopc, pertenecen  a mvxjdtamst.fgledb,
o a mvxjdtamst.fgledg, sus respectivas condiciones deben ir en el primer o
en el segundo WHERE.


Efectivamente, DB2 soporta inner join en sentencias select o subselect.

No conozco ninguna base de datos que te permita actualizar, en una sola
sentencia, más de una tabla.


Saludos,
  ---
Santiago Martí
   Dusen, S.A.
  ---




 juancarlos.santos
 @labiana.com
 Enviado por: Para
 forum.help400-adm 
 [EMAIL PROTECTED]  cc

Asunto
 02/06/2006 17:36  Sentencia SQL con WinSQL


Por favor,
responda a
 [EMAIL PROTECTED]
  bios.es






Hola a todos,


Estoy intentado crear una sentencia SQL para actualizar unos datos sobre un
fichero que esta en el AS400 (I5) con DB2 y que para saber que registro
debo actualizar lo uno con otro fichero, pero la sentencia SQL que he
montado no me funciona he probado alguna variante pero sigue sin funcionar.


Update  mvxjdtamst.fgledb inner join mvxjdtamst.fgledg
on mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledg.egcono = 100 and mvxjdtamst.fgledg.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = ''


El error pincipal que me indica es Error: SQL0199 - Palabra clave INNER
inesperada. Símbolos válidos: SET. (State:37000, Native Code: FF39)
pero se supone que el DB2 soporta la palabar inner.

Un saludo y gracias por vuestra ayuda.


Juan Carlos





__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400



__
Forum.HELP400 es un servicio más de N

Re: Sentencia SQL con WinSQL

2006-06-05 Por tema Santiago G Martí
Prueba,

Update  mvxjdtamst.fgledb
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledb.egcono = 100 and mvxjdtamst.fgledb.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = '' and
exists (select * from mvxjdtamst.fgledg where
 mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
 mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
 mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
 mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno)


Dependiendo de si egacdt, egait1, egbopc, pertenecen  a mvxjdtamst.fgledb,
o a mvxjdtamst.fgledg, sus respectivas condiciones deben ir en el primer o
en el segundo WHERE.


Efectivamente, DB2 soporta inner join en sentencias select o subselect.

No conozco ninguna base de datos que te permita actualizar, en una sola
sentencia, más de una tabla.


Saludos,
  ---
Santiago Martí
   Dusen, S.A.
  ---



   
 juancarlos.santos 
 @labiana.com  
 Enviado por: Para 
 forum.help400-adm   
 [EMAIL PROTECTED]  cc 
   
Asunto 
 02/06/2006 17:36  Sentencia SQL con WinSQL
   
   
Por favor, 
responda a 
 [EMAIL PROTECTED] 
  bios.es  
   
   




Hola a todos,


Estoy intentado crear una sentencia SQL para actualizar unos datos sobre un
fichero que esta en el AS400 (I5) con DB2 y que para saber que registro
debo actualizar lo uno con otro fichero, pero la sentencia SQL que he
montado no me funciona he probado alguna variante pero sigue sin funcionar.


Update  mvxjdtamst.fgledb inner join mvxjdtamst.fgledg
on mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledg.egcono = 100 and mvxjdtamst.fgledg.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = ''


El error pincipal que me indica es Error: SQL0199 - Palabra clave INNER
inesperada. Símbolos válidos: SET. (State:37000, Native Code: FF39)
pero se supone que el DB2 soporta la palabar inner.

Un saludo y gracias por vuestra ayuda.


Juan Carlos





__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400



__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400


Re: Sentencia SQL con WinSQL

2006-06-05 Por tema Fernando Pérez




Vale, en ese caso, para un solo campo de unión sería sería :

Update tabla1 set campo = '04' where clave1 in (select clave2 from
tabla2)

El problema es cuando has de enlazar por varios campos. En ese caso yo
suelo convertir todo a alfanumérico y concatenar:
where digits(clave11num) || digits(clave21num) || clave31alfa in
(select digits(clave12num) || digits(clave22num) || clave32alfa from
tabla2)




Saludos.

Fernando Pérez  

Cerámica Saloni. Dpto. Auditoría y
Organización




En/na [EMAIL PROTECTED] ha escrit:

  
Hola,

Pero según mi SQL en realidad el select que devuelva un único registro de
la unión de los dos ficheros que quiero unir debe ir en la cláusula where,
ya que el set valor = 'este es un valor fijo que es 04'.
Os pregunto, como debería ser el where de la sentencia.


Juan Carlos Santos
Dpto. T.I.
Labiana Life Sciences Services  S.L.
Tel. +34 937 369 700
Fax. +34 937 862 558


Este mensaje y toda la documentación adjunta es confidencial y puede ser de
uso restringido. Si Ud. no es uno de los destinatarios señalados, por favor
informe al emisor, y borre y destruya el original y todas las copias del
mensaje. No debe utilizar, copiar, reenviar, distribuir o, en general,
disponer en ninguna forma de la información incluida en el mismo. Si recibe
este e-mail por error por favor notifiquelo inmediatamente por e-mail a la
dirección [EMAIL PROTECTED]. Muchas Gracias.

This message, including attachments, is confidential and may be privileged.
If you are not an intended recipient, please notify the sender then delete
and destroy the original message and all copies. You should not use, copy,
forward, disclose or take any action based on this message or any
information herein. If you receive this message in error please notify us
immediately at [EMAIL PROTECTED] . Thank you for your cooperation.




   
  Fernando Pérez   
  <[EMAIL PROTECTED]>  Para: forum.help400@combios.es  
  Enviado por: cc: 
  forum.help400-admin      Asunto:   Re: Sentencia SQL con WinSQL  
  @combios.es  
   
   
  02/06/2006 18:01 
  Por favor, responda  
  a forum.help400  
   
   




No puedes hacer el update de un join. En su lugar has de hacer :

update tabla1 set campo1_1 = (select campo2_1 from tabla2 where
tabla1.clave = tabla2.clave)
where...

Te has de asegurar de que el select devuelve un solo registro.

Saludos.

Fernando Pérez

Cerámica Saloni. Dpto. Auditoría y Organización


En/na [EMAIL PROTECTED] ha escrit:

Hola a todos,


Estoy intentado crear una sentencia SQL para actualizar unos datos sobre un
fichero que esta en el AS400 (I5) con DB2 y que para saber que registro
debo actualizar lo uno con otro fichero, pero la sentencia SQL que he
montado no me funciona he probado alguna variante pero sigue sin funcionar.


Update  mvxjdtamst.fgledb inner join mvxjdtamst.fgledg
on mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledg.egcono = 100 and mvxjdtamst.fgledg.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = ''


El error pincipal que me indica es Error: SQL0199 - Palabra clave INNER
inesperada. Símbolos válidos: SET. (State:37000, Native Code: FF39)
pero se supone que el DB2 soporta la

Re: Sentencia SQL con WinSQL

2006-06-04 Por tema juancarlos . santos


Hola,

Pero según mi SQL en realidad el select que devuelva un único registro de
la unión de los dos ficheros que quiero unir debe ir en la cláusula where,
ya que el set valor = 'este es un valor fijo que es 04'.
Os pregunto, como debería ser el where de la sentencia.


Juan Carlos Santos
Dpto. T.I.
Labiana Life Sciences Services  S.L.
Tel. +34 937 369 700
Fax. +34 937 862 558


Este mensaje y toda la documentación adjunta es confidencial y puede ser de
uso restringido. Si Ud. no es uno de los destinatarios señalados, por favor
informe al emisor, y borre y destruya el original y todas las copias del
mensaje. No debe utilizar, copiar, reenviar, distribuir o, en general,
disponer en ninguna forma de la información incluida en el mismo. Si recibe
este e-mail por error por favor notifiquelo inmediatamente por e-mail a la
dirección [EMAIL PROTECTED] Muchas Gracias.

This message, including attachments, is confidential and may be privileged.
If you are not an intended recipient, please notify the sender then delete
and destroy the original message and all copies. You should not use, copy,
forward, disclose or take any action based on this message or any
information herein. If you receive this message in error please notify us
immediately at [EMAIL PROTECTED] . Thank you for your cooperation.





   
  Fernando Pérez
   
  <[EMAIL PROTECTED]>  Para: 
forum.help400@combios.es  
  Enviado por: cc:  
   
  forum.help400-admin      Asunto:   Re: Sentencia SQL con 
WinSQL  
  @combios.es   
   

   

   
  02/06/2006 18:01  
   
  Por favor, responda   
   
  a forum.help400   
   

   

   




No puedes hacer el update de un join. En su lugar has de hacer :

update tabla1 set campo1_1 = (select campo2_1 from tabla2 where
tabla1.clave = tabla2.clave)
where...

Te has de asegurar de que el select devuelve un solo registro.

Saludos.

Fernando Pérez

Cerámica Saloni. Dpto. Auditoría y Organización


En/na [EMAIL PROTECTED] ha escrit:

Hola a todos,


Estoy intentado crear una sentencia SQL para actualizar unos datos sobre un
fichero que esta en el AS400 (I5) con DB2 y que para saber que registro
debo actualizar lo uno con otro fichero, pero la sentencia SQL que he
montado no me funciona he probado alguna variante pero sigue sin funcionar.


Update  mvxjdtamst.fgledb inner join mvxjdtamst.fgledg
on mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledg.egcono = 100 and mvxjdtamst.fgledg.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = ''


El error pincipal que me indica es Error: SQL0199 - Palabra clave INNER
inesperada. Símbolos válidos: SET. (State:37000, Native Code: FF39)
pero se supone que el DB2 soporta la palabar inner.

Un saludo y gracias por vuestra ayuda.


Juan Carlos





__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400




(See attached file: fperez.vcf)




fperez.vcf
Description: Binary data


Re: Sentencia SQL con WinSQL

2006-06-02 Por tema Fernando Pérez




No puedes hacer el update de un join. En su lugar has de hacer : 

update tabla1 set campo1_1 = (select campo2_1 from tabla2 where
tabla1.clave = tabla2.clave)
where...

Te has de asegurar de que el select devuelve un solo registro.




Saludos.

Fernando Pérez  

Cerámica Saloni. Dpto. Auditoría y
Organización




En/na [EMAIL PROTECTED] ha escrit:

  Hola a todos,


Estoy intentado crear una sentencia SQL para actualizar unos datos sobre un
fichero que esta en el AS400 (I5) con DB2 y que para saber que registro
debo actualizar lo uno con otro fichero, pero la sentencia SQL que he
montado no me funciona he probado alguna variante pero sigue sin funcionar.


Update  mvxjdtamst.fgledb inner join mvxjdtamst.fgledg
on mvxjdtamst.fgledg.egcono = mvxjdtamst.fgledb.egcono and
mvxjdtamst.fgledg.egdivi = mvxjdtamst.fgledb.egdivi and
mvxjdtamst.fgledg.egjrno = mvxjdtamst.fgledb.egjrno and
mvxjdtamst.fgledg.egjsno = mvxjdtamst.fgledb.egjsno
set mvxjdtamst.fgledb.egbopc = '04'
where
mvxjdtamst.fgledg.egcono = 100 and mvxjdtamst.fgledg.egdivi = 'PHA'
and egacdt > 20060208 and egait1 like '572%'and egbopc = ''


El error pincipal que me indica es Error: SQL0199 - Palabra clave INNER
inesperada. Símbolos válidos: SET. (State:37000, Native Code: FF39)
pero se supone que el DB2 soporta la palabar inner.

Un saludo y gracias por vuestra ayuda.


Juan Carlos





__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

  



begin:vcard
fn;quoted-printable:Fernando P=C3=A9rez
n;quoted-printable:P=C3=A9rez;Fernando
org;quoted-printable:;Auditor=C3=ADa y Organizaci=C3=B3n
email;internet:[EMAIL PROTECTED]
tel;work:Ext. 627
x-mozilla-html:TRUE
version:2.1
end:vcard



Re: sentencia SQL

2006-01-16 Por tema Fernando Pérez




Si devuelve varias filas , pero todas con el mismo valor, como te
indica Alex.

Si tienen distintos valores, tendrás que decidir qué valor dar. Eso se
puede hacer con MAX o MIN:

UPDATE LIBL1/TABLA1 SET CAMPO1A = (SELECT MAX(CAMPO2B)
FROM LIBL2/TABLA2 FROM LIBL2/TABLA2 WHERE CAMPO2C  = CAMPO1C )

Y si tiene distintos valores y simplemente quieres darle el primero que
pille (no se me ocurre qué utilidad puede tener, pero bueno):

UPDATE LIBL1/TABLA1 SET CAMPO1A = (SELECT CAMPO2B FROM
LIBL2/TABLA2 FROM LIBL2/TABLA2 WHERE CAMPO2C  = CAMPO1C FETCH FIRST
1 ROWS ONLY)







Saludos.

Fernando Pérez  

Cerámica Saloni. Dpto. Sistemas




Àlex Corretgé escribió:

  Hola,
   
  Si el resultado es de mas de una fila, pero todas tienen el
mismo valor, puedes hacer esto:
   
  UPDATE
LIBL1/TABLA1 SET CAMPO1A = (SELECT distinct CAMPO2B FROM LIBL2/TABLA2
FROM LIBL2/TABLA2 WHERE CAMPO2C  = CAMPO1C)
   
  Si tienen diferente valor
se puede trampear con un MAX(campo2b) o MIN(), o poniendo al final un
FOR FETCH 1 ROW ONLY, pero eso indica que ha ocurrido alguna cosa con
la calidad de los datos.
  
   
  fins aviat...
  Àlex Corretgé
   
  
  
 
  2006/1/13, jose manuel lopez gestal
<[EMAIL PROTECTED]>:
  
me da un
error que dice
 
 El
resultado de SELECT es de más de una fila.
 
 
ya lo hemos
solucionado de otra forma ... pero me gustaría saber cómo se hace
utilizando SQL
 
disculpad
las molestias. gracias

 
 

TABLA1 EN
LIBL1 CON CAMPOS 1A, 1B y 1C
TABLA2 EN
LIBL2 CON CAMPOS 2A, 2B Y 2C
 
lo que
queremos es pegar el valor del CAMPO2B de la TABLA2 en el CAMPO1A de la
TABLA1, para aquellos registros de la TABLA1 que tienen el mismo valor
en el CAMPO1C que en el CAMPO2C de la TABLA2.

 



  -Mensaje
original-
  De: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]En
nombre de Pedro Molina
  
  Enviado el: viernes, 13 de enero de 2006 18:13
  Para: forum.help400@combios.es
  
  Asunto: RE: sentencia SQL
  
  
  
  
  

  

Si està mal escrita, se me fuè un from de màs, esto
quedarìa asi:


  

  
  Yo te entendì esto:
  Update TABLA1 Set (campoa) = (Select Campoc
From TABLA2 Where Campob = Campoc )
  La condiciòn para TABLA 1 es el campo CAMPOB
y compara contra CAMPOC.
  Saludos !!
  

  


 

  
  



  

  
  




  From: "Rogelio Carlon" <[EMAIL PROTECTED]>
Reply-To: 
forum.help400@combios.es
To: <forum.help400@combios.es>
Subject: RE: sentencia SQL
  
Date: Fri, 13 Jan 2006 16:34:59 +0100
  
  
  Esta
sentencia SQl esta mal escrita
   
  UPDATE
TABLA1 SET CAMPOA = (SELECT CAMPOC FROM TABLA2 WHERE CAMPOB = CAMPOC)
WHERE ¿CONDICION PARA TABLA1?
  
   
  
  
  
  De: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
  En nombre de Pedro
Molina
  Enviado el:
viernes, 13 de enero de 2006 14:45
  Para: 
forum.help400@combios.es
          Asunto: Re:
sentencia SQL
  
   
  
  

  

Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc
>From Tabla2 From TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 

  
  

 

  

  
  

 


  
  
  From:  "Dario G. I. Heinze" <
[EMAIL PROTECTED]>
Reply-To:  forum.help400@combios.es
      
To:  <forum.help400@combios.es>
Subject:  Re: sentencia SQL
Date:  Fri, 13 Jan 2006 10:19:20
-0300
>y cual es el SQL que te da error?
>
>Saludos,
  
>
>Dario.-
>_
>- Original Message -
>From: "jose manuel lopez gestal" <
[EMAIL PROTECTED]>
>To: <forum.help400@combios.es>
>Sent: Friday, January 13, 2006 9:34 AM
  
>Subject: sentencia SQL
>
>
> > Buenos días foro:
> >
> > quiero actualizar el campoA de unos registros n de una tabla1
con el valor
> > del campoc de otra tabla2 cuando el campoB de la tabla1
coincide con el
  
> > campoC de la tabla2. (no sé si me he expresado bien ...)
> >
> > he hecho una prueba en MS-SQL y me va

Re: sentencia SQL

2006-01-14 Por tema Àlex Corretgé
Hola,
 
Si el resultado es de mas de una fila, pero todas tienen el mismo valor, puedes hacer esto:
 
UPDATE LIBL1/TABLA1 SET CAMPO1A = (SELECT distinct CAMPO2B FROM LIBL2/TABLA2 FROM LIBL2/TABLA2 WHERE CAMPO2C  = CAMPO1C)
 
Si tienen diferente valor se puede trampear con un MAX(campo2b) o MIN(), o poniendo al final un FOR FETCH 1 ROW ONLY, pero eso indica que ha ocurrido alguna cosa con la calidad de los datos.

 
fins aviat...
Àlex Corretgé
 
 
2006/1/13, jose manuel lopez gestal <[EMAIL PROTECTED]>:

me da un error que dice
 
 El resultado de SELECT es de más de una fila.
 
 
ya lo hemos solucionado de otra forma ... pero me gustaría saber cómo se hace utilizando SQL
 
disculpad las molestias. gracias
 
 

TABLA1 EN LIBL1 CON CAMPOS 1A, 1B y 1C
TABLA2 EN LIBL2 CON CAMPOS 2A, 2B Y 2C
 
lo que queremos es pegar el valor del CAMPO2B de la TABLA2 en el CAMPO1A de la TABLA1, para aquellos registros de la TABLA1 que tienen el mismo valor en el CAMPO1C que en el CAMPO2C de la TABLA2.

 

-Mensaje original-De: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]En nombre de Pedro Molina
Enviado el: viernes, 13 de enero de 2006 18:13Para: forum.help400@combios.es
Asunto: RE: sentencia SQL






Si està mal escrita, se me fuè un from de màs, esto quedarìa asi:





Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From TABLA2 Where Campob = Campoc )
La condiciòn para TABLA 1 es el campo CAMPOB y compara contra CAMPOC.
Saludos !!
 







From: "Rogelio Carlon" <[EMAIL PROTECTED]>Reply-To: 
forum.help400@combios.esTo: <forum.help400@combios.es>Subject: RE: sentencia SQL
Date: Fri, 13 Jan 2006 16:34:59 +0100

Esta sentencia SQl esta mal escrita
 
UPDATE TABLA1 SET CAMPOA = (SELECT CAMPOC FROM TABLA2 WHERE CAMPOB = CAMPOC) WHERE ¿CONDICION PARA TABLA1?

 




De: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] 
En nombre de Pedro MolinaEnviado el: viernes, 13 de enero de 2006 14:45Para: 
forum.help400@combios.esAsunto: Re: sentencia SQL
 





Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 From TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 


 


 





From:  "Dario G. I. Heinze" <
[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.es
To:  <forum.help400@combios.es>
Subject:  Re: sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 -0300>y cual es el SQL que te da error?>>Saludos,
>>Dario.->_>- Original Message ->From: "jose manuel lopez gestal" <
[EMAIL PROTECTED]>>To: <forum.help400@combios.es>>Sent: Friday, January 13, 2006 9:34 AM
>Subject: sentencia SQL>>> > Buenos días foro:> >> > quiero actualizar el campoA de unos registros n de una tabla1 con el valor> > del campoc de otra tabla2 cuando el campoB de la tabla1 coincide con el
> > campoC de la tabla2. (no sé si me he expresado bien ...)> >> > he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice que el> > resultado del select (que meto dentro del update) no es el adecuado.
> >> > alguien me puede echar una mano ?> >> > gracias> >> >> >> > **> > José Manuel López Gestal
> > Dpto. Sistemas de Información> > Hospital Modelo> > http://www.hospitalmodelo.com
> > **> >> >> > Este mensaje puede contener Información Privilegiada o Confidencial. Si>Vd.> > no es el destinatario indicado en este mensaje (o el responsable de la
> > entrega del mensaje a dicha persona), no debe copiar o entregar este> > mensaje a ninguna persona. Por el contrario, debe destruir este mensaje y> > notificárnoslo inmediatamente.> >
> >> > This e-mail and any attachment contains information which is private and> > confidential and is intended for the addressee only. If you are not an> > addressee, you are not authorised to read, copy or use the e-mail or any
> > attachment. If you have received this e-mail in error, please notify the> > sender by return e-mail and then destroy it.> >> >> >> > __
> > Forum.HELP400 es un servicio más de NEWS/400.> > © Publicaciones Help400, S.L. - Todos los derechos reservados> > 
http://www.help400.es> > _> >> > Para darte de baja visita la siguente URL:> > 
http://coyote.combios.es/mailman/listinfo/forum.help400> >>>__>Forum.HELP400 es un servicio más de NEWS/400.>© Publicaciones Help400, 
S.L. - Todos los derechos reservados>http://www.help400.es>_
>&

RE: sentencia SQL

2006-01-13 Por tema jose manuel lopez gestal



me da 
un error que dice
 
 El resultado de SELECT es de más de una fila.
 
 
ya lo 
hemos solucionado de otra forma ... pero me gustaría saber cómo se hace 
utilizando SQL
 
disculpad las molestias. gracias
 
 

TABLA1 
EN LIBL1 CON CAMPOS 1A, 1B y 1C
TABLA2 
EN LIBL2 CON CAMPOS 2A, 2B Y 2C
 
lo que 
queremos es pegar el valor del CAMPO2B de la TABLA2 en el CAMPO1A de la TABLA1, 
para aquellos registros de la TABLA1 que tienen el mismo valor en el CAMPO1C que 
en el CAMPO2C de la TABLA2.
 

  -Mensaje original-De: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]En nombre de Pedro 
  MolinaEnviado el: viernes, 13 de enero de 2006 
  18:13Para: forum.help400@combios.esAsunto: RE: sentencia 
  SQL
  
  


  
Si està mal escrita, se me fuè un from de màs, esto quedarìa asi:


  
  

  Yo te entendì esto:
  Update TABLA1 Set (campoa) = (Select 
  Campoc From TABLA2 Where Campob = Campoc )
  La condiciòn para TABLA 1 es el campo 
  CAMPOB y compara contra CAMPOC.
  Saludos 
!!
 

  

  


  
  From: "Rogelio Carlon" <[EMAIL PROTECTED]>Reply-To: 
  forum.help400@combios.esTo: 
  Subject: RE: sentencia 
  SQLDate: Fri, 13 Jan 2006 16:34:59 +0100
  
  

  

  

  
  Esta sentencia 
  SQl esta mal escrita
   
  UPDATE TABLA1 SET 
  CAMPOA = (SELECT CAMPOC FROM TABLA2 WHERE CAMPOB = CAMPOC) WHERE 
  ¿CONDICION PARA TABLA1?
   
  
  
  
  
  De: 
  [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
  En nombre de Pedro 
  MolinaEnviado el: 
  viernes, 13 de enero de 2006 14:45Para: 
  forum.help400@combios.esAsunto: Re: sentencia 
  SQL
   
  
  


  
Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc 
From Tabla2 From TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 

  
 
  

 

  
  
  
  From:  "Dario G. I. Heinze" 
  <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  Subject:  Re: sentencia 
  SQLDate:  Fri, 13 Jan 2006 10:19:20 
  -0300>y cual es el SQL que te da 
  error?>>Saludos,>>Dario.->_>- 
  Original Message ->From: "jose manuel lopez gestal" 
  <[EMAIL PROTECTED]>>To: 
  >Sent: Friday, January 13, 2006 
  9:34 AM>Subject: sentencia SQL>>> > 
  Buenos días foro:> >> > quiero actualizar el 
  campoA de unos registros n de una tabla1 con el valor> > del 
  campoc de otra tabla2 cuando el campoB de la tabla1 coincide con 
  el> > campoC de la tabla2. (no sé si me he expresado bien 
  ...)> >> > he hecho una prueba en MS-SQL y me va 
  bien, pero en SQL-400 me dice que el> > resultado del select 
  (que meto dentro del update) no es el adecuado.> >> 
  > alguien me puede echar una mano ?> >> > 
  gracias> >> >> >> > 
  **> > José Manuel López 
  Gestal> > Dpto. Sistemas de Información> > 
  Hospital Modelo> > http://www.hospitalmodelo.com> 
  > **> >> 
  >> > Este mensaje puede contener Información Privilegiada 
  o Confidencial. Si>Vd.> > no es el destinatario 
  indicado en este mensaje (o el responsable de la> > entrega 
  del mensaje a dicha persona), no debe copiar o entregar este> 
  > mensaje a ninguna persona. Por el contrario, debe destruir este 
  mensaje y> > notificárnoslo inmediatamente.> 
  >> >> > This e-mail and any attachment contains 
  information which is private and> > confidential and is 
  intended for the addressee only. If you are not an> > 
  addressee, you are not authorised to read, copy or use the e-mail or 
  any> > attachment. If you have received this e-mail in 
  error, please notify the> > sender by return e-mail and then 
  destroy it.> >> >> >> > 
  __> > 
  Forum.HELP400 es un servicio más de NEWS/400.> > © 
  Publicaciones Help400, S.L. - Todos los derechos reservados> 
  > http://www.help400.es> > 
  ___

RE: sentencia SQL

2006-01-13 Por tema Pedro Molina




Si està mal escrita, se me fuè un from de màs, esto quedarìa asi:





Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From TABLA2 Where Campob = Campoc )
La condiciòn para TABLA 1 es el campo CAMPOB y compara contra CAMPOC.
Saludos !!
 







From: "Rogelio Carlon" <[EMAIL PROTECTED]>Reply-To: forum.help400@combios.esTo: Subject: RE: sentencia SQLDate: Fri, 13 Jan 2006 16:34:59 +0100








Esta sentencia SQl esta mal escrita
 
UPDATE TABLA1 SET CAMPOA = (SELECT CAMPOC FROM TABLA2 WHERE CAMPOB = CAMPOC) WHERE ¿CONDICION PARA TABLA1?
 




De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Pedro MolinaEnviado el: viernes, 13 de enero de 2006 14:45Para: forum.help400@combios.esAsunto: Re: sentencia SQL
 





Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 From TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 


 


 




From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  Subject:  Re: sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 -0300>y cual es el SQL que te da error?>>Saludos,>>Dario.->_>- Original Message ->From: "jose manuel lopez gestal" <[EMAIL PROTECTED]>>To: >Sent: Friday, January 
13, 2006 9:34 AM>Subject: sentencia SQL>>> > Buenos días foro:> >> > quiero actualizar el campoA de unos registros n de una tabla1 con el valor> > del campoc de otra tabla2 cuando el campoB de la tabla1 coincide con el> > campoC de la tabla2. (no sé si me he expresado bien ...)> >> > he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice que el> > resultado del select (que meto dentro del update) no es el adecuado.> >> > alguien me puede echar una mano ?> >> > gracias> >> >> >> > **> > José Manuel López Gestal> > Dpto. Sistemas de Información> > Hospital Modelo> > http://www.hospitalmodelo.com> > 
**> >> >> > Este mensaje puede contener Información Privilegiada o Confidencial. Si>Vd.> > no es el destinatario indicado en este mensaje (o el responsable de la> > entrega del mensaje a dicha persona), no debe copiar o entregar este> > mensaje a ninguna persona. Por el contrario, debe destruir este mensaje y> > notificárnoslo inmediatamente.> >> >> > This e-mail and any attachment contains information which is private and> > confidential and is intended for the addressee only. If you are not an> > addressee, you are not authorised to read, copy or use the e-mail or any> > attachment. If you have received this e-mail in error, please notify the> > sender by return e-mail and then destroy it.> 
>> >> >> > __> > Forum.HELP400 es un servicio más de NEWS/400.> > © Publicaciones Help400, S.L. - Todos los derechos reservados> > http://www.help400.es> > _> >> > Para darte de baja visita la siguente URL:> > http://coyote.combios.es/mailman/listinfo/forum.help400> >>>__>Forum.HELP400 es un servicio más de NEWS/400.>© Publicaciones Help400, S.L. - Todos los derechos reservados>http://www.help400.es>_>>Para darte de baja visita la siguente URL:>http://coyote.combios.es/mailman/listinfo/forum.help400




MSN Amor Busca tu ½ naranja __ Forum.HELP400 es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _ Para darte de baja visita la siguente URL: http://coyote.combios.es/mailman/listinfo/forum.help400 Charla con tus amigos en línea mediante MSN Messenger: Haz clic aquí 

__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400


Re: sentencia SQL

2006-01-13 Por tema Pedro Molina




Sorry...se me fuè un FROM de mas... es asi:





Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From TABLA2 Where Campob = Campoc )
Asi es como lo hago yo.
Salu2







From: "Pedro Molina" <[EMAIL PROTECTED]>Reply-To: forum.help400@combios.esTo: forum.help400@combios.esSubject: Re: sentencia SQLDate: Fri, 13 Jan 2006 13:45:12 +





Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 From TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 










From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  Subject:  Re: sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 -0300>y cual es el SQL que te da error?>>Saludos,>>Dario.->_>- Original Message ->From: "jose manuel lopez gestal" <[EMAIL PROTECTED]>>To: >Sent: Friday, January 13, 2006 9:34 AM>Subject: sentencia SQL>>> > Buenos días foro:> >> > quiero actualizar el campoA de unos registros n de una tabla1 con el valor> > del campoc de otra tabla2 cuando el campoB de la tabla1 coincide con 
el> > campoC de la tabla2. (no sé si me he expresado bien ...)> >> > he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice que el> > resultado del select (que meto dentro del update) no es el adecuado.> >> > alguien me puede echar una mano ?> >> > gracias> >> >> >> > **> > José Manuel López Gestal> > Dpto. Sistemas de Información> > Hospital Modelo> > http://www.hospitalmodelo.com> > **> >> >> > Este mensaje puede contener Información Privilegiada o Confidencial. Si>Vd.> > no es el destinatario indicado en este mensaje (o el responsable de la> > entrega del mensaje a dicha 
persona), no debe copiar o entregar este> > mensaje a ninguna persona. Por el contrario, debe destruir este mensaje y> > notificárnoslo inmediatamente.> >> >> > This e-mail and any attachment contains information which is private and> > confidential and is intended for the addressee only. If you are not an> > addressee, you are not authorised to read, copy or use the e-mail or any> > attachment. If you have received this e-mail in error, please notify the> > sender by return e-mail and then destroy it.> >> >> >> > __> > Forum.HELP400 es un servicio más de NEWS/400.> > © Publicaciones Help400, S.L. - Todos los derechos reservados> > http://www.help400.es> > 
_> >> > Para darte de baja visita la siguente URL:> > http://coyote.combios.es/mailman/listinfo/forum.help400> >>>__>Forum.HELP400 es un servicio más de NEWS/400.>© Publicaciones Help400, S.L. - Todos los derechos reservados>http://www.help400.es>_>>Para darte de baja visita la siguente URL:>http://coyote.combios.es/mailman/listinfo/forum.help400

MSN Amor Busca tu ½ naranja __ Forum.HELP400 es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _ Para darte de baja visita la siguente URL: http://coyote.combios.es/mailman/listinfo/forum.help400 MSN Amor Busca tu ½ naranja 

__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400


Re: sentencia SQL

2006-01-13 Por tema Dario G. I. Heinze



se me chispoteo...
 
es asi
 

Update TABLA1 Set (campoa) = (Select Campoc From 
Tabla2 Where Campob = Campoc )
   Where Exists(Select 1 From 
Tabla2 Where Campob = Campoc)
 
Saludos,
 
Dario.-
_

  - Original Message - 
  From: 
  jose 
  manuel lopez gestal 
  To: forum.help400@combios.es 
  Sent: Friday, January 13, 2006 12:05 
  PM
  Subject: RE: sentencia SQL
  
  Me 
  dice que la palabra clave FROM es inesperada. se refiere al segundo 
  from
   
  UPDATE LIBL1/TABLA1 SET CAMPO1A = (SELECT CAMPO2B FROM LIBL2/TABLA2 
  FROM LIBL2/TABLA2 WHERE CAMPO2C  = CAMPO1C)
   
   
  TABLA1 EN LIBL1 CON CAMPOS 1A, 1B y 1C
  TABLA2 EN LIBL2 CON CAMPOS 2A, 2B Y 2C
   
  lo 
  que queremos es pegar el valor del CAMPO2B de la TABLA2 en el CAMPO1A de la 
  TABLA1, para aquellos registros de la TABLA1 que tienen el mismo valor en el 
  CAMPO1C que en el CAMPO2C de la TABLA2.
   
   
  creo 
  que ahora lo he contado bien ... y si no ... pues lo haremos con COBOL 
  ...
   
  gracias por vuestra ayuda
   
  
  
-Mensaje original-De: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]En 
nombre de Dario G. I. HeinzeEnviado el: viernes, 13 de enero 
de 2006 15:03Para: forum.help400@combios.esAsunto: Re: 
sentencia SQL
a la sentencia comentada le faltaria un control 
para los casos en que no exista relacion, quedando algo asi...
 
Update TABLA1 Set (campoa) = (Select Campoc 
From Tabla2 From TABLA2 Where Campob = Campoc )
   Where Exists(Select 1 From 
Tabla2 Where Campob = Campoc)
Saludos,
 
Dario.-
_

  - Original Message - 
  From: 
  Pedro 
  Molina 
  To: forum.help400@combios.es 
  Sent: Friday, January 13, 2006 10:45 
  AM
  Subject: Re: sentencia SQL
  
  
  


  
Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 >From 
TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 

  

  




  

  From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  <forum.help400@combios.es>Subject:  Re: 
  sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 
  -0300>y cual es el SQL que te da 
  error?>>Saludos,>>Dario.->_>- 
  Original Message ->From: "jose manuel lopez gestal" 
  <[EMAIL PROTECTED]>>To: 
  >Sent: Friday, January 13, 2006 
  9:34 AM>Subject: sentencia SQL>>> > 
  Buenos días foro:> >> > quiero actualizar el 
  campoA de unos registros n de una tabla1 con el valor> > del 
  campoc de otra tabla2 cuando el campoB de la tabla1 coincide con 
  el> > campoC de la tabla2. (no sé si me he expresado bien 
  ...)> >> > he hecho una prueba en MS-SQL y me va 
  bien, pero en SQL-400 me dice que el> > resultado del select 
  (que meto dentro del update) no es el adecuado.> >> 
  > alguien me puede echar una mano ?> >> > 
  gracias> >> >> >> > 
  **> > José Manuel López 
  Gestal> > Dpto. Sistemas de Información> > 
  Hospital Modelo> > http://www.hospitalmodelo.com> 
  > **> >> 
  >> > Este mensaje puede contener Información Privilegiada 
  o Confidencial. Si>Vd.> > no es el destinatario 
  indicado en este mensaje (o el responsable de la> > entrega 
  del mensaje a dicha persona), no debe copiar o entregar este> 
  > mensaje a ninguna persona. Por el contrario, debe destruir este 
  mensaje y> > notificárnoslo inmediatamente.> 
  >> >> > This e-mail and any attachment contains 
  information which is private and> > confidential and is 
  intended for the addressee only. If you are not an> > 
  addressee, you are not authorised to read, copy or use the e-mail or 
  any> > attachment. If you have received this e-mail in 
  error, please notify the> > sender by return e-mail and then 
  destroy it.> >> >> >> > 
  __> > 
  Forum.HELP400 es un servicio más de NEWS/400.> > © 
  Publicaciones Help400, S.L. - Todos los derechos reservados> 
 

RE: sentencia SQL

2006-01-13 Por tema jorge



Prueba:
 
UPDATE 
LIBL1/TABLA1 A SET A.CAMPO1A = (SELECT CAMPO2B FROM LIBL2/TABLA2 B WHERE A.CAMPO2C  = B.CAMPO1C)

  -Mensaje original-De: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]En nombre de jose manuel lopez 
  gestalEnviado el: viernes, 13 de enero de 2006 16:06 
  p.m.Para: forum.help400@combios.esAsunto: RE: sentencia 
  SQL
  Me 
  dice que la palabra clave FROM es inesperada. se refiere al segundo 
  from
   
  UPDATE LIBL1/TABLA1 SET CAMPO1A = (SELECT CAMPO2B FROM LIBL2/TABLA2 
  FROM LIBL2/TABLA2 WHERE CAMPO2C  = CAMPO1C)
   
   
  TABLA1 EN LIBL1 CON CAMPOS 1A, 1B y 1C
  TABLA2 EN LIBL2 CON CAMPOS 2A, 2B Y 2C
   
  lo 
  que queremos es pegar el valor del CAMPO2B de la TABLA2 en el CAMPO1A de la 
  TABLA1, para aquellos registros de la TABLA1 que tienen el mismo valor en el 
  CAMPO1C que en el CAMPO2C de la TABLA2.
   
   
  creo 
  que ahora lo he contado bien ... y si no ... pues lo haremos con COBOL 
  ...
   
  gracias por vuestra ayuda
   
  
  
-Mensaje original-De: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]En 
nombre de Dario G. I. HeinzeEnviado el: viernes, 13 de enero 
de 2006 15:03Para: forum.help400@combios.esAsunto: Re: 
sentencia SQL
a la sentencia comentada le faltaria un control 
para los casos en que no exista relacion, quedando algo asi...
 
Update TABLA1 Set (campoa) = (Select Campoc 
From Tabla2 From TABLA2 Where Campob = Campoc )
   Where Exists(Select 1 From 
Tabla2 Where Campob = Campoc)
Saludos,
 
Dario.-
_

  - Original Message - 
  From: 
  Pedro 
  Molina 
  To: forum.help400@combios.es 
  Sent: Friday, January 13, 2006 10:45 
  AM
  Subject: Re: sentencia SQL
  
  
  


  
Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 From 
TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 

  

  




  

  From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  <forum.help400@combios.es>Subject:  Re: 
  sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 
  -0300>y cual es el SQL que te da 
  error?>>Saludos,>>Dario.->_>- 
  Original Message ->From: "jose manuel lopez gestal" 
  <[EMAIL PROTECTED]>>To: 
  >Sent: Friday, January 13, 2006 
  9:34 AM>Subject: sentencia SQL>>> > 
  Buenos días foro:> >> > quiero actualizar el 
  campoA de unos registros n de una tabla1 con el valor> > del 
  campoc de otra tabla2 cuando el campoB de la tabla1 coincide con 
  el> > campoC de la tabla2. (no sé si me he expresado bien 
  ...)> >> > he hecho una prueba en MS-SQL y me va 
  bien, pero en SQL-400 me dice que el> > resultado del select 
  (que meto dentro del update) no es el adecuado.> >> 
  > alguien me puede echar una mano ?> >> > 
  gracias> >> >> >> > 
  **> > José Manuel López 
  Gestal> > Dpto. Sistemas de Información> > 
  Hospital Modelo> > http://www.hospitalmodelo.com> 
  > **> >> 
  >> > Este mensaje puede contener Información Privilegiada 
  o Confidencial. Si>Vd.> > no es el destinatario 
  indicado en este mensaje (o el responsable de la> > entrega 
  del mensaje a dicha persona), no debe copiar o entregar este> 
  > mensaje a ninguna persona. Por el contrario, debe destruir este 
  mensaje y> > notificárnoslo inmediatamente.> 
  >> >> > This e-mail and any attachment contains 
  information which is private and> > confidential and is 
  intended for the addressee only. If you are not an> > 
  addressee, you are not authorised to read, copy or use the e-mail or 
  any> > attachment. If you have received this e-mail in 
  error, please notify the> > sender by return e-mail and then 
  destroy it.> >> >> >> > 
  __> > 
  Forum.HELP400 es un servicio más de NEWS/400.> > © 
  Publicaciones Help400, S.L. - Todos los derechos reservados> 
  > http://www.help400.es> > 
  _

RE: sentencia SQL

2006-01-13 Por tema Rogelio Carlon








Esta sentencia SQl esta mal escrita

 

UPDATE TABLA1 SET CAMPOA = (SELECT CAMPOC
FROM TABLA2 WHERE CAMPOB = CAMPOC) WHERE ¿CONDICION PARA TABLA1?

 









De:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Pedro Molina
Enviado el: viernes, 13 de enero
de 2006 14:45
Para: forum.help400@combios.es
Asunto: Re: sentencia SQL



 




 
  
  Yo te
  entendì esto:
  Update
  TABLA1 Set (campoa) = (Select Campoc From Tabla2 From TABLA2 Where Campob =
  Campoc )
  Esto es
  para SQL/400.
  Espero
  te sirva.
  Saludos
  !!
   
  
 
 
  
   
  
 






 











From:  "Dario
G. I. Heinze" <[EMAIL PROTECTED]>
Reply-To:  forum.help400@combios.es
To:  <forum.help400@combios.es>
Subject:  Re: sentencia SQL
Date:  Fri, 13 Jan 2006 10:19:20
-0300
>y cual es el SQL que te da error?
>
>Saludos,
>
>Dario.-
>_
>- Original Message -
>From: "jose manuel lopez gestal" <[EMAIL PROTECTED]>
>To: <forum.help400@combios.es>
>Sent: Friday, January 13, 2006 9:34 AM
>Subject: sentencia SQL
>
>
> > Buenos días foro:
> >
> > quiero actualizar el campoA de unos registros n de una tabla1 con el
valor
> > del campoc de otra tabla2 cuando el campoB de la tabla1 coincide con
el
> > campoC de la tabla2. (no sé si me he expresado bien ...)
> >
> > he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice
que el
> > resultado del select (que meto dentro del update) no es el adecuado.
> >
> > alguien me puede echar una mano ?
> >
> > gracias
> >
> >
> >
> > **
> > José Manuel López Gestal
> > Dpto. Sistemas de Información
> > Hospital Modelo
> > http://www.hospitalmodelo.com
> > **
> >
> >
> > Este mensaje puede contener Información Privilegiada o Confidencial.
Si
>Vd.
> > no es el destinatario indicado en este mensaje (o el responsable de
la
> > entrega del mensaje a dicha persona), no debe copiar o entregar este
> > mensaje a ninguna persona. Por el contrario, debe destruir este
mensaje y
> > notificárnoslo inmediatamente.
> >
> >
> > This e-mail and any attachment contains information which is private
and
> > confidential and is intended for the addressee only. If you are not
an
> > addressee, you are not authorised to read, copy or use the e-mail or
any
> > attachment. If you have received this e-mail in error, please notify
the
> > sender by return e-mail and then destroy it.
> >
> >
> >
> > __
> > Forum.HELP400 es un servicio más de NEWS/400.
> > © Publicaciones Help400, S.L. - Todos los derechos reservados
> > http://www.help400.es
> > _
> >
> > Para darte de baja visita la siguente URL:
> > http://coyote.combios.es/mailman/listinfo/forum.help400
> >
>
>__
>Forum.HELP400 es un servicio más de NEWS/400.
>© Publicaciones Help400, S.L. - Todos los derechos reservados
>http://www.help400.es
>_
>
>Para darte de baja visita la siguente URL:
>http://coyote.combios.es/mailman/listinfo/forum.help400
















MSN Amor Busca
tu ½ naranja 






__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

RE: sentencia SQL

2006-01-13 Por tema jose manuel lopez gestal



Me 
dice que la palabra clave FROM es inesperada. se refiere al segundo 
from
 
UPDATE 
LIBL1/TABLA1 SET CAMPO1A = (SELECT CAMPO2B FROM LIBL2/TABLA2 FROM LIBL2/TABLA2 
WHERE CAMPO2C  = CAMPO1C)
 
 
TABLA1 
EN LIBL1 CON CAMPOS 1A, 1B y 1C
TABLA2 
EN LIBL2 CON CAMPOS 2A, 2B Y 2C
 
lo que 
queremos es pegar el valor del CAMPO2B de la TABLA2 en el CAMPO1A de la TABLA1, 
para aquellos registros de la TABLA1 que tienen el mismo valor en el CAMPO1C que 
en el CAMPO2C de la TABLA2.
 
 
creo 
que ahora lo he contado bien ... y si no ... pues lo haremos con COBOL 
...
 
gracias por vuestra ayuda
 


  -Mensaje original-De: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]En nombre de Dario G. I. 
  HeinzeEnviado el: viernes, 13 de enero de 2006 
  15:03Para: forum.help400@combios.esAsunto: Re: sentencia 
  SQL
  a la sentencia comentada le faltaria un control 
  para los casos en que no exista relacion, quedando algo asi...
   
  Update TABLA1 Set (campoa) = (Select Campoc From 
  Tabla2 From TABLA2 Where Campob = Campoc )
     Where Exists(Select 1 From 
  Tabla2 Where Campob = Campoc)
  Saludos,
   
  Dario.-
  _
  
- Original Message - 
From: 
Pedro 
Molina 
To: forum.help400@combios.es 
Sent: Friday, January 13, 2006 10:45 
AM
Subject: Re: sentencia SQL



  
  

  Yo te entendì esto:
  Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 >From TABLA2 
  Where Campob = Campoc )
  Esto es para SQL/400.
  Espero te sirva.
  Saludos !!
   
  

  

  
  
  
  


From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  <forum.help400@combios.es>Subject:  Re: 
sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 
-0300>y cual es el SQL que te da 
error?>>Saludos,>>Dario.->_>- 
Original Message ->From: "jose manuel lopez gestal" 
<[EMAIL PROTECTED]>>To: 
>Sent: Friday, January 13, 2006 
9:34 AM>Subject: sentencia SQL>>> > 
Buenos días foro:> >> > quiero actualizar el campoA 
de unos registros n de una tabla1 con el valor> > del campoc 
de otra tabla2 cuando el campoB de la tabla1 coincide con el> 
> campoC de la tabla2. (no sé si me he expresado bien ...)> 
>> > he hecho una prueba en MS-SQL y me va bien, pero en 
SQL-400 me dice que el> > resultado del select (que meto 
dentro del update) no es el adecuado.> >> > alguien 
me puede echar una mano ?> >> > gracias> 
>> >> >> > 
**> > José Manuel López 
Gestal> > Dpto. Sistemas de Información> > Hospital 
Modelo> > http://www.hospitalmodelo.com> > 
**> >> >> 
> Este mensaje puede contener Información Privilegiada o 
Confidencial. Si>Vd.> > no es el destinatario indicado 
en este mensaje (o el responsable de la> > entrega del mensaje 
a dicha persona), no debe copiar o entregar este> > mensaje a 
ninguna persona. Por el contrario, debe destruir este mensaje y> 
> notificárnoslo inmediatamente.> >> >> 
> This e-mail and any attachment contains information which is 
private and> > confidential and is intended for the addressee 
only. If you are not an> > addressee, you are not authorised 
to read, copy or use the e-mail or any> > attachment. If you 
have received this e-mail in error, please notify the> > 
sender by return e-mail and then destroy it.> >> 
>> >> > 
__> > 
Forum.HELP400 es un servicio más de NEWS/400.> > © 
Publicaciones Help400, S.L. - Todos los derechos reservados> > 
http://www.help400.es> > 
_> 
>> > Para darte de baja visita la siguente URL:> 
> http://coyote.combios.es/mailman/listinfo/forum.help400> 
>>>__>Forum.HELP400 
es un servicio más de NEWS/400.>© Publicaciones Help400, S.L. - 
Todos los derechos 
reservados>http://www.help400.es>_>>Para 
darte de baja visita la siguente 
URL:>http://coyote

Re: sentencia SQL

2006-01-13 Por tema Dario G. I. Heinze



a la sentencia comentada le faltaria un control 
para los casos en que no exista relacion, quedando algo asi...
 
Update TABLA1 Set (campoa) = (Select Campoc From 
Tabla2 From TABLA2 Where Campob = Campoc )
   Where Exists(Select 1 From 
Tabla2 Where Campob = Campoc)
Saludos,
 
Dario.-
_

  - Original Message - 
  From: 
  Pedro 
  Molina 
  To: forum.help400@combios.es 
  Sent: Friday, January 13, 2006 10:45 
  AM
  Subject: Re: sentencia SQL
  
  
  


  
Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 >From TABLA2 
Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 

  

  




  

  From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  <forum.help400@combios.es>Subject:  Re: 
  sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 
  -0300>y cual es el SQL que te da 
  error?>>Saludos,>>Dario.->_>- 
  Original Message ->From: "jose manuel lopez gestal" 
  <[EMAIL PROTECTED]>>To: 
  >Sent: Friday, January 13, 2006 
  9:34 AM>Subject: sentencia SQL>>> > Buenos 
  días foro:> >> > quiero actualizar el campoA de unos 
  registros n de una tabla1 con el valor> > del campoc de otra 
  tabla2 cuando el campoB de la tabla1 coincide con el> > campoC 
  de la tabla2. (no sé si me he expresado bien ...)> >> 
  > he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice 
  que el> > resultado del select (que meto dentro del update) no 
  es el adecuado.> >> > alguien me puede echar una mano 
  ?> >> > gracias> >> >> 
  >> > **> > José 
  Manuel López Gestal> > Dpto. Sistemas de Información> 
  > Hospital Modelo> > http://www.hospitalmodelo.com> 
  > **> >> 
  >> > Este mensaje puede contener Información Privilegiada o 
  Confidencial. Si>Vd.> > no es el destinatario indicado en 
  este mensaje (o el responsable de la> > entrega del mensaje a 
  dicha persona), no debe copiar o entregar este> > mensaje a 
  ninguna persona. Por el contrario, debe destruir este mensaje y> 
  > notificárnoslo inmediatamente.> >> >> > 
  This e-mail and any attachment contains information which is private 
  and> > confidential and is intended for the addressee only. If 
  you are not an> > addressee, you are not authorised to read, 
  copy or use the e-mail or any> > attachment. If you have 
  received this e-mail in error, please notify the> > sender by 
  return e-mail and then destroy it.> >> >> 
  >> > 
  __> > 
  Forum.HELP400 es un servicio más de NEWS/400.> > © Publicaciones 
  Help400, S.L. - Todos los derechos reservados> > 
  http://www.help400.es> > 
  _> >> 
  > Para darte de baja visita la siguente URL:> > 
  http://coyote.combios.es/mailman/listinfo/forum.help400> 
  >>>__>Forum.HELP400 
  es un servicio más de NEWS/400.>© Publicaciones Help400, S.L. - 
  Todos los derechos 
  reservados>http://www.help400.es>_>>Para 
  darte de baja visita la siguente 
  URL:>http://coyote.combios.es/mailman/listinfo/forum.help400
  
  MSN Amor Busca tu 
  ½ naranja __ Forum.HELP400 
  es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los 
  derechos reservados http://www.help400.es 
  _ Para darte de baja 
  visita la siguente URL: 
  http://coyote.combios.es/mailman/listinfo/forum.help400 



Re: sentencia SQL

2006-01-13 Por tema Pedro Molina




Yo te entendì esto:
Update TABLA1 Set (campoa) = (Select Campoc From Tabla2 From TABLA2 Where Campob = Campoc )
Esto es para SQL/400.
Espero te sirva.
Saludos !!
 










From:  "Dario G. I. Heinze" <[EMAIL PROTECTED]>Reply-To:  forum.help400@combios.esTo:  Subject:  Re: sentencia SQLDate:  Fri, 13 Jan 2006 10:19:20 -0300>y cual es el SQL que te da error?>>Saludos,>>Dario.->_>- Original Message ->From: "jose manuel lopez gestal" <[EMAIL PROTECTED]>>To: >Sent: Friday, January 13, 2006 9:34 AM>Subject: sentencia SQL>>> > Buenos días foro:> >> > quiero actualizar el campoA de unos registros n de una tabla1 con el valor> > del campoc de otra tabla2 cuando el campoB de la tabla1 coincide con 
el> > campoC de la tabla2. (no sé si me he expresado bien ...)> >> > he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice que el> > resultado del select (que meto dentro del update) no es el adecuado.> >> > alguien me puede echar una mano ?> >> > gracias> >> >> >> > **> > José Manuel López Gestal> > Dpto. Sistemas de Información> > Hospital Modelo> > http://www.hospitalmodelo.com> > **> >> >> > Este mensaje puede contener Información Privilegiada o Confidencial. Si>Vd.> > no es el destinatario indicado en este mensaje (o el responsable de la> > entrega del mensaje a dicha 
persona), no debe copiar o entregar este> > mensaje a ninguna persona. Por el contrario, debe destruir este mensaje y> > notificárnoslo inmediatamente.> >> >> > This e-mail and any attachment contains information which is private and> > confidential and is intended for the addressee only. If you are not an> > addressee, you are not authorised to read, copy or use the e-mail or any> > attachment. If you have received this e-mail in error, please notify the> > sender by return e-mail and then destroy it.> >> >> >> > __> > Forum.HELP400 es un servicio más de NEWS/400.> > © Publicaciones Help400, S.L. - Todos los derechos reservados> > http://www.help400.es> > 
_> >> > Para darte de baja visita la siguente URL:> > http://coyote.combios.es/mailman/listinfo/forum.help400> >>>__>Forum.HELP400 es un servicio más de NEWS/400.>© Publicaciones Help400, S.L. - Todos los derechos reservados>http://www.help400.es>_>>Para darte de baja visita la siguente URL:>http://coyote.combios.es/mailman/listinfo/forum.help400MSN Amor Busca tu ½ naranja 

__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400


Re: sentencia SQL

2006-01-13 Por tema Dario G. I. Heinze
y cual es el SQL que te da error?

Saludos,

Dario.-
_
- Original Message - 
From: "jose manuel lopez gestal" <[EMAIL PROTECTED]>
To: 
Sent: Friday, January 13, 2006 9:34 AM
Subject: sentencia SQL


> Buenos días foro:
>
> quiero actualizar el campoA de unos registros n de una tabla1 con el valor
> del campoc de otra tabla2 cuando el campoB de la tabla1 coincide con el
> campoC de la tabla2. (no sé si me he expresado bien ...)
>
> he hecho una prueba en MS-SQL y me va bien, pero en SQL-400 me dice que el
> resultado del select (que meto dentro del update) no es el adecuado.
>
> alguien me puede echar una mano ?
>
> gracias
>
>
>
> **
> José Manuel López Gestal
> Dpto. Sistemas de Información
> Hospital Modelo
> http://www.hospitalmodelo.com
> **
>
>
> Este mensaje puede contener Información Privilegiada o Confidencial. Si
Vd.
> no es el destinatario indicado en este mensaje (o el responsable de la
> entrega del mensaje a dicha persona), no debe copiar o entregar este
> mensaje a ninguna persona. Por el contrario, debe destruir este mensaje y
> notificárnoslo inmediatamente.
>
>
> This e-mail and any attachment contains information which is private and
> confidential and is intended for the addressee only. If you are not an
> addressee, you are not authorised to read, copy or use the e-mail or any
> attachment. If you have received this e-mail in error, please notify the
> sender by return e-mail and then destroy it.
>
>
>
> __
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
>
> Para darte de baja visita la siguente URL:
> http://coyote.combios.es/mailman/listinfo/forum.help400
>

__
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400


Re: Sentencia SQL

2002-12-16 Por tema Miguel Angel Peinador
No sé si José Luis lo habrá solucionado ya :), pero después de darle alguna
vuelta más al asunto y ya que me había montado una prueba, he llegado a
esto:

Select  max( digits(PREFHA) || digits(prepre))
from tabla1 , tabla2
where PREPRO = PROPRO
and PROFEC >= PREFHA
group by PREPRO, PROFEC


lo que dejaría en las ocho primeras posiciones la fecha del importe elegido
y luego el importe mismo, pasarlo a una DS y listo...

Un saludo,
Miguel




_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



Re: Sentencia SQL

2002-12-16 Por tema Miguel Angel Peinador
Sí, sí, ya lo ví, es mi atocinamiento de lunes; y además es evidente lo que
dices, pero hasta que no lo he probado no he sido capaz de salir de mi
error.


gracias.
Miguel

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 1:49 PM
Subject: RE: Sentencia SQL


A ver, me parece que no nos entendemos :)

Vamos con un ejemplo, que siempre es lo mejor:

tabla1:
producto 1, fecha 20021010

tabla2 :

producto 1, fecha hasta 20020505, precio 5
producto 1, fecha hasta 20020905, precio 10
producto 1, fecha hasta 20021231, precio 15

el precio a aplicar sería 10, por ser el del registro con mayor fecha hasta
menor o igual a la fecha de la tabla1.

Haciendo group by por producto, fecha y precio, te sacará un registro por
cada uno de los distintos valores de producto-fecha -precio que aparezcan en
los registros, con un máximo de hastafecha por cada uno de los distintos
valores de estos tres campos. Con lo que el resultado del sql que comentas
para estos datos serían los registros:

1, 20021010, 20020905, 10  <-- este es el registro que realmente se quiere
1, 20021010, 20020505, 5

Para el segundo registro, 20020505 es la fechahasta máxima (y única en el
ejemplo) para producto 1, fecha 20021010 y precio 5 (este es el problema de
incluir el precio de la segunda tabla en el group by).

En el sql de José Luis se hace un segundo select para obtener la fecha
máxima a nivel de producto, y con ella recupera el registro correcto de
tabla2. Esto es algo que no se puede hacer (que yo sepa) en un solo paso en
una sentencia con group by.


Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>





_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



RE: Sentencia SQL

2002-12-16 Por tema Fernando Pérez
A ver, me parece que no nos entendemos :) 

Vamos con un ejemplo, que siempre es lo mejor: 

tabla1: 
producto 1, fecha 20021010

tabla2 :

producto 1, fecha hasta 20020505, precio 5
producto 1, fecha hasta 20020905, precio 10
producto 1, fecha hasta 20021231, precio 15

el precio a aplicar sería 10, por ser el del registro con mayor fecha hasta
menor o igual a la fecha de la tabla1.

Haciendo group by por producto, fecha y precio, te sacará un registro por
cada uno de los distintos valores de producto-fecha -precio que aparezcan en
los registros, con un máximo de hastafecha por cada uno de los distintos
valores de estos tres campos. Con lo que el resultado del sql que comentas
para estos datos serían los registros:

1, 20021010, 20020905, 10  <-- este es el registro que realmente se quiere
1, 20021010, 20020505, 5

Para el segundo registro, 20020505 es la fechahasta máxima (y única en el
ejemplo) para producto 1, fecha 20021010 y precio 5 (este es el problema de
incluir el precio de la segunda tabla en el group by).

En el sql de José Luis se hace un segundo select para obtener la fecha
máxima a nivel de producto, y con ella recupera el registro correcto de
tabla2. Esto es algo que no se puede hacer (que yo sepa) en un solo paso en
una sentencia con group by.


Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 13:06
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


Existiendo coherencia en los datos, esto es: en tabla2, la clave única
(PRODUCTO, HASTAFECHA) con una relación UNITARIA con PRECIO, mi sentencia es
"correcta".

Select producto, fecha, max(hastafecha), precio
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha, precio


Interpretas bien al decir que son las tarifas de precios por fechas, y claro
que tiene sentido a diferente fecha diferente precio, pero no es eso lo que
he dicho, lo que he dicho es:

Si saliera más de un registro por producto, quiere decir: que a misma fecha
y producto tiene varios precios -para una misma clave única: PRODUCTO,FECHA-

Si se diera este caso, no se podría conseguir el precio, ni con una ni con
varias sentencias SQL. Habría que replantear las tablas.


Lo ilustré con el ejemplo:

tabla1

  producto  fecha

  CLAVOS  20020918
  TUERCAS   20020106

tabla2

  producto   hastafecha precio
->CLAVOS  20020918 1000
->CLAVOS  20020918 2000
  CLAVOS  20020718 1000
  CLAVOS  20020818 1000

si esto es así: ¿cuál es el precio de los clavos para el 19-12-2002?

¿1000? ¿2000?

-no se puede definir-

Hay incongruencia en los datos o la clave de la tabla2 es insuficiente para
definir de forma univoca el precio, luego no hay forma de aplicar -como
dices- "A un producto y fecha se debe aplicar únicamente un registro de
tabla2, que sería el precio
más actualizado del producto a esa fecha."

Y dices:

"El problema es que al hacerlo por SQL necesitamos un
Group by por producto, aplicando el max sobre hastafecha, para saber cual es
el mayor de los iguales o inferiores a fecha, pero al hacer esto no podemos
recuperar en la misma sentencia el precio."

Reconozco tu ortodoxia en el manejo de tablas. Y con riesgo a equivocarme,
pienso:

Si lo que busco es una única relación 'producto <-> precio en un momento
dado'.

¿tan mal está incluido el precio en el group by?

Un saludo,
Miguel







- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 12:06 PM
Subject: RE: Sentencia SQL


Viendo la estructura de datos yo interpreto que la tabla2 son las tarifas de
precio por fechas. Desde ese punto de vista tiene sentido que para un mismo
producto hayan varios precios para hastafecha distintas. A un producto y
fecha se debe aplicar únicamente un registro de tabla2, que sería el precio
más actualizado del producto a esa fecha (con el mayor hastafecha que sea <=
que tabla1.fecha). El problema es que al hacerlo por SQL necesitamos un
Group by por producto, aplicando el max sobre hastafecha, para saber cual es
el mayor de los iguales o inferiores a fecha, pero al hacer esto no podemos
recuperar en la misma sentencia el precio.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 11:45
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


Si saliera más de un registro por producto, quiere decir: que a misma fecha
y producto tiene varios precios -para una misma clave única: PRODUCTO,
FECHA-. Lo cual indica una seria incongruencia en los datos, creo que si mi
sentencia no es válida, habría que replantear la tabla2.

Algo así:

>
> tabla1:  producto
>  fecha   

Re: Sentencia SQL

2002-12-16 Por tema Miguel Angel Peinador
Existiendo coherencia en los datos, esto es: en tabla2, la clave única
(PRODUCTO, HASTAFECHA) con una relación UNITARIA con PRECIO, mi sentencia es
"correcta".

Select producto, fecha, max(hastafecha), precio
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha, precio


Interpretas bien al decir que son las tarifas de precios por fechas, y claro
que tiene sentido a diferente fecha diferente precio, pero no es eso lo que
he dicho, lo que he dicho es:

Si saliera más de un registro por producto, quiere decir: que a misma fecha
y producto tiene varios precios -para una misma clave única: PRODUCTO,FECHA-

Si se diera este caso, no se podría conseguir el precio, ni con una ni con
varias sentencias SQL. Habría que replantear las tablas.


Lo ilustré con el ejemplo:

tabla1

  producto  fecha

  CLAVOS  20020918
  TUERCAS   20020106

tabla2

  producto   hastafecha precio
->CLAVOS  20020918 1000
->CLAVOS  20020918 2000
  CLAVOS  20020718 1000
  CLAVOS  20020818 1000

si esto es así: ¿cuál es el precio de los clavos para el 19-12-2002?

¿1000? ¿2000?

-no se puede definir-

Hay incongruencia en los datos o la clave de la tabla2 es insuficiente para
definir de forma univoca el precio, luego no hay forma de aplicar -como
dices- "A un producto y fecha se debe aplicar únicamente un registro de
tabla2, que sería el precio
más actualizado del producto a esa fecha."

Y dices:

"El problema es que al hacerlo por SQL necesitamos un
Group by por producto, aplicando el max sobre hastafecha, para saber cual es
el mayor de los iguales o inferiores a fecha, pero al hacer esto no podemos
recuperar en la misma sentencia el precio."

Reconozco tu ortodoxia en el manejo de tablas. Y con riesgo a equivocarme,
pienso:

Si lo que busco es una única relación 'producto <-> precio en un momento
dado'.

¿tan mal está incluido el precio en el group by?

Un saludo,
Miguel







- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 12:06 PM
Subject: RE: Sentencia SQL


Viendo la estructura de datos yo interpreto que la tabla2 son las tarifas de
precio por fechas. Desde ese punto de vista tiene sentido que para un mismo
producto hayan varios precios para hastafecha distintas. A un producto y
fecha se debe aplicar únicamente un registro de tabla2, que sería el precio
más actualizado del producto a esa fecha (con el mayor hastafecha que sea <=
que tabla1.fecha). El problema es que al hacerlo por SQL necesitamos un
Group by por producto, aplicando el max sobre hastafecha, para saber cual es
el mayor de los iguales o inferiores a fecha, pero al hacer esto no podemos
recuperar en la misma sentencia el precio.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 11:45
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


Si saliera más de un registro por producto, quiere decir: que a misma fecha
y producto tiene varios precios -para una misma clave única: PRODUCTO,
FECHA-. Lo cual indica una seria incongruencia en los datos, creo que si mi
sentencia no es válida, habría que replantear la tabla2.

Algo así:

>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>

tabla1

  producto  fecha

  CLAVOS  20020918
  TUERCAS   20020106

tabla2

  producto   hastafecha precio
->CLAVOS  20020918 1000
->CLAVOS  20020918 2000
  CLAVOS  20020718 1000
  CLAVOS  20020818 1000


en cualquier caso, -y aún con mal planteamiento inicial de la tabla2-, si
existen precios distintos para mismo producto y misma fecha, creo que tiene
sentido incluirlo en el group by.

Un saludo,
Miguel

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 11:19 AM
Subject: RE: Sentencia SQL


No podrías. Fíjate que si pones el precio en el group by te saldría más de
un registro por producto, y el max(fecha) sería a nivel de producto y
precio, en lugar de solamente a nivel de producto.

Creo que no hay forma de sacar los datos con un group by y solo una
sentencia (la sentencia de José Luis son en realidad dos, ya que tiene dos
select). Se quiere el precio del producto correspondiente al registro de la
segunda tabla con la mayor fecha . Ésta se obtiene con un Max, pero el
precio no es recuperable con ninguna función que se pueda aplicar en el
Group by

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10

RE: Sentencia SQL

2002-12-16 Por tema Fernando Pérez
Viendo la estructura de datos yo interpreto que la tabla2 son las tarifas de
precio por fechas. Desde ese punto de vista tiene sentido que para un mismo
producto hayan varios precios para hastafecha distintas. A un producto y
fecha se debe aplicar únicamente un registro de tabla2, que sería el precio
más actualizado del producto a esa fecha (con el mayor hastafecha que sea <=
que tabla1.fecha). El problema es que al hacerlo por SQL necesitamos un
Group by por producto, aplicando el max sobre hastafecha, para saber cual es
el mayor de los iguales o inferiores a fecha, pero al hacer esto no podemos
recuperar en la misma sentencia el precio.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 11:45
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


Si saliera más de un registro por producto, quiere decir: que a misma fecha
y producto tiene varios precios -para una misma clave única: PRODUCTO,
FECHA-. Lo cual indica una seria incongruencia en los datos, creo que si mi
sentencia no es válida, habría que replantear la tabla2.

Algo así:

>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>

tabla1

  producto  fecha

  CLAVOS  20020918
  TUERCAS   20020106

tabla2

  producto   hastafecha precio
->CLAVOS  20020918 1000
->CLAVOS  20020918 2000
  CLAVOS  20020718 1000
  CLAVOS  20020818 1000


en cualquier caso, -y aún con mal planteamiento inicial de la tabla2-, si
existen precios distintos para mismo producto y misma fecha, creo que tiene
sentido incluirlo en el group by.

Un saludo,
Miguel

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 11:19 AM
Subject: RE: Sentencia SQL


No podrías. Fíjate que si pones el precio en el group by te saldría más de
un registro por producto, y el max(fecha) sería a nivel de producto y
precio, en lugar de solamente a nivel de producto.

Creo que no hay forma de sacar los datos con un group by y solo una
sentencia (la sentencia de José Luis son en realidad dos, ya que tiene dos
select). Se quiere el precio del producto correspondiente al registro de la
segunda tabla con la mayor fecha . Ésta se obtiene con un Max, pero el
precio no es recuperable con ninguna función que se pueda aplicar en el
Group by

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:44
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


bueno, también se puede incluir en el select (y en el group by)


Select producto, fecha, max(hastafecha), precio
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha, precio

lo de la eficiencia ya depende de muchos factores..., a mi no me va muy mal
probandolo con fichero gordos, pero si tuviera que hacer algo similar -y
pudiera elegir- no usaría SQL sino RPG ó COBOL, que sería mucho más
eficiente.

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 10:26 AM
Subject: RE: Sentencia SQL


Esta sentencia sería la mas eficiente si no tuviera que recuperar también el
precio de la segunda tabla. Al tener que recuperarlo obligaría a un segundo
sql sobre la segunda tabla, buscando por producto y la fecha recuperada en
el primero.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:09
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


prueba con esto:

Select producto, fecha, max(hastafecha)
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha


Un saludo,
Miguel

- Original Message -
From: "Jose Luis Mur Lalueza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 15, 2002 6:34 PM
Subject: Sentencia SQL


> Hola,
>
> Cómo resolveríais esto con SQL?
>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>
>
> Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
> sea el más proximo inferior o igual al campo fecha de la tabla1.
>
> Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
> where a.producto = b.producto and b.hastafecha = (select max(has

Re: Sentencia SQL

2002-12-16 Por tema Miguel Angel Peinador
Si saliera más de un registro por producto, quiere decir: que a misma fecha
y producto tiene varios precios -para una misma clave única: PRODUCTO,
FECHA-. Lo cual indica una seria incongruencia en los datos, creo que si mi
sentencia no es válida, habría que replantear la tabla2.

Algo así:

>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>

tabla1

  producto  fecha

  CLAVOS  20020918
  TUERCAS   20020106

tabla2

  producto   hastafecha precio
->CLAVOS  20020918 1000
->CLAVOS  20020918 2000
  CLAVOS  20020718 1000
  CLAVOS  20020818 1000


en cualquier caso, -y aún con mal planteamiento inicial de la tabla2-, si
existen precios distintos para mismo producto y misma fecha, creo que tiene
sentido incluirlo en el group by.

Un saludo,
Miguel

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 11:19 AM
Subject: RE: Sentencia SQL


No podrías. Fíjate que si pones el precio en el group by te saldría más de
un registro por producto, y el max(fecha) sería a nivel de producto y
precio, en lugar de solamente a nivel de producto.

Creo que no hay forma de sacar los datos con un group by y solo una
sentencia (la sentencia de José Luis son en realidad dos, ya que tiene dos
select). Se quiere el precio del producto correspondiente al registro de la
segunda tabla con la mayor fecha . Ésta se obtiene con un Max, pero el
precio no es recuperable con ninguna función que se pueda aplicar en el
Group by

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:44
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


bueno, también se puede incluir en el select (y en el group by)


Select producto, fecha, max(hastafecha), precio
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha, precio

lo de la eficiencia ya depende de muchos factores..., a mi no me va muy mal
probandolo con fichero gordos, pero si tuviera que hacer algo similar -y
pudiera elegir- no usaría SQL sino RPG ó COBOL, que sería mucho más
eficiente.

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 10:26 AM
Subject: RE: Sentencia SQL


Esta sentencia sería la mas eficiente si no tuviera que recuperar también el
precio de la segunda tabla. Al tener que recuperarlo obligaría a un segundo
sql sobre la segunda tabla, buscando por producto y la fecha recuperada en
el primero.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:09
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


prueba con esto:

Select producto, fecha, max(hastafecha)
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha


Un saludo,
Miguel

- Original Message -
From: "Jose Luis Mur Lalueza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 15, 2002 6:34 PM
Subject: Sentencia SQL


> Hola,
>
> Cómo resolveríais esto con SQL?
>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>
>
> Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
> sea el más proximo inferior o igual al campo fecha de la tabla1.
>
> Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
> where a.producto = b.producto and b.hastafecha = (select max(hastafecha)
> from tabla2 c where b.producto = c.producto and c.hastafecha <= a.fecha)
>
> El problema es que me genera una via de acceso de la tabla2 y tiene muchos
> registros
>
> Se os ocurre algo?
>
> slds
> José Luis
>
>
>
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
>
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=LEAVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de

RE: Sentencia SQL

2002-12-16 Por tema Fernando Pérez
No podrías. Fíjate que si pones el precio en el group by te saldría más de
un registro por producto, y el max(fecha) sería a nivel de producto y
precio, en lugar de solamente a nivel de producto.

Creo que no hay forma de sacar los datos con un group by y solo una
sentencia (la sentencia de José Luis son en realidad dos, ya que tiene dos
select). Se quiere el precio del producto correspondiente al registro de la
segunda tabla con la mayor fecha . Ésta se obtiene con un Max, pero el
precio no es recuperable con ninguna función que se pueda aplicar en el
Group by

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:44
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


bueno, también se puede incluir en el select (y en el group by)


Select producto, fecha, max(hastafecha), precio
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha, precio

lo de la eficiencia ya depende de muchos factores..., a mi no me va muy mal
probandolo con fichero gordos, pero si tuviera que hacer algo similar -y
pudiera elegir- no usaría SQL sino RPG ó COBOL, que sería mucho más
eficiente.

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 10:26 AM
Subject: RE: Sentencia SQL


Esta sentencia sería la mas eficiente si no tuviera que recuperar también el
precio de la segunda tabla. Al tener que recuperarlo obligaría a un segundo
sql sobre la segunda tabla, buscando por producto y la fecha recuperada en
el primero.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:09
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


prueba con esto:

Select producto, fecha, max(hastafecha)
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha


Un saludo,
Miguel

- Original Message -
From: "Jose Luis Mur Lalueza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 15, 2002 6:34 PM
Subject: Sentencia SQL


> Hola,
>
> Cómo resolveríais esto con SQL?
>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>
>
> Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
> sea el más proximo inferior o igual al campo fecha de la tabla1.
>
> Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
> where a.producto = b.producto and b.hastafecha = (select max(hastafecha)
> from tabla2 c where b.producto = c.producto and c.hastafecha <= a.fecha)
>
> El problema es que me genera una via de acceso de la tabla2 y tiene muchos
> registros
>
> Se os ocurre algo?
>
> slds
> José Luis
>
>
>
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
>
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=LEAVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=AVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



Re: Sentencia SQL

2002-12-16 Por tema Miguel Angel Peinador
bueno, también se puede incluir en el select (y en el group by)


Select producto, fecha, max(hastafecha), precio
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha, precio

lo de la eficiencia ya depende de muchos factores..., a mi no me va muy mal
probandolo con fichero gordos, pero si tuviera que hacer algo similar -y
pudiera elegir- no usaría SQL sino RPG ó COBOL, que sería mucho más
eficiente.

- Original Message -
From: "Fernando Pérez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 16, 2002 10:26 AM
Subject: RE: Sentencia SQL


Esta sentencia sería la mas eficiente si no tuviera que recuperar también el
precio de la segunda tabla. Al tener que recuperarlo obligaría a un segundo
sql sobre la segunda tabla, buscando por producto y la fecha recuperada en
el primero.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:09
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


prueba con esto:

Select producto, fecha, max(hastafecha)
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha


Un saludo,
Miguel

- Original Message -
From: "Jose Luis Mur Lalueza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 15, 2002 6:34 PM
Subject: Sentencia SQL


> Hola,
>
> Cómo resolveríais esto con SQL?
>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>
>
> Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
> sea el más proximo inferior o igual al campo fecha de la tabla1.
>
> Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
> where a.producto = b.producto and b.hastafecha = (select max(hastafecha)
> from tabla2 c where b.producto = c.producto and c.hastafecha <= a.fecha)
>
> El problema es que me genera una via de acceso de la tabla2 y tiene muchos
> registros
>
> Se os ocurre algo?
>
> slds
> José Luis
>
>
>
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
>
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=LEAVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=AVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



RE: Sentencia SQL

2002-12-16 Por tema Fernando Pérez
Esta sentencia sería la mas eficiente si no tuviera que recuperar también el
precio de la segunda tabla. Al tener que recuperarlo obligaría a un segundo
sql sobre la segunda tabla, buscando por producto y la fecha recuperada en
el primero.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
<mailto:[EMAIL PROTECTED]>


-Mensaje original-
De: Miguel Angel Peinador [mailto:[EMAIL PROTECTED]]
Enviado el: lunes, 16 de diciembre de 2002 10:09
Para: [EMAIL PROTECTED]
Asunto: Re: Sentencia SQL


prueba con esto:

Select producto, fecha, max(hastafecha)
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha


Un saludo,
Miguel

- Original Message -
From: "Jose Luis Mur Lalueza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 15, 2002 6:34 PM
Subject: Sentencia SQL


> Hola,
>
> Cómo resolveríais esto con SQL?
>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>
>
> Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
> sea el más proximo inferior o igual al campo fecha de la tabla1.
>
> Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
> where a.producto = b.producto and b.hastafecha = (select max(hastafecha)
> from tabla2 c where b.producto = c.producto and c.hastafecha <= a.fecha)
>
> El problema es que me genera una via de acceso de la tabla2 y tiene muchos
> registros
>
> Se os ocurre algo?
>
> slds
> José Luis
>
>
>
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
>
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=LEAVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



Re: Sentencia SQL

2002-12-16 Por tema Miguel Angel Peinador
prueba con esto:

Select producto, fecha, max(hastafecha)
from tabla1 a, tabla2 b
where a.producto = b.producto
and fecha >= hastafecha
group by producto, fecha


Un saludo,
Miguel

- Original Message -
From: "Jose Luis Mur Lalueza" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 15, 2002 6:34 PM
Subject: Sentencia SQL


> Hola,
>
> Cómo resolveríais esto con SQL?
>
> tabla1:  producto
>  fecha  (Un solo registro por producto)
>
> tabla2:  producto
>  hastafecha
>  precio  (varios registros por producto)
>
>
> Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
> sea el más proximo inferior o igual al campo fecha de la tabla1.
>
> Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
> where a.producto = b.producto and b.hastafecha = (select max(hastafecha)
> from tabla2 c where b.producto = c.producto and c.hastafecha <= a.fecha)
>
> El problema es que me genera una via de acceso de la tabla2 y tiene muchos
> registros
>
> Se os ocurre algo?
>
> slds
> José Luis
>
>
>
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
>
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=LEAVE


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



RE: Sentencia SQL

2002-12-16 Por tema Fernando Pérez
Arranca el debug y genera la sentencia SQL. En las anotaciones de trabajo
tendrás todas las acciones que se han hecho y te dirá cual es la vía de
acceso que se ha creado. Créala tu y así evitarás que lo haga el sql (al
menos así debería ser).

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas



-Mensaje original-
De: Jose Luis Mur Lalueza [mailto:[EMAIL PROTECTED]]
Enviado el: domingo, 15 de diciembre de 2002 18:35
Para: [EMAIL PROTECTED]
Asunto: Sentencia SQL


Hola,

Cómo resolveríais esto con SQL?

tabla1:  producto
 fecha  (Un solo registro por producto)

tabla2:  producto
 hastafecha
 precio  (varios registros por producto)


Necesito unir las 2 tablas, un solo registro de la tabla2 cuyo campo fecha
sea el más proximo inferior o igual al campo fecha de la tabla1.

Los obtengo con la siguiente sentencia: Select * from tabla1 a, tabla2 b
where a.producto = b.producto and b.hastafecha = (select max(hastafecha)
from tabla2 c where b.producto = c.producto and c.hastafecha <= a.fecha)

El problema es que me genera una via de acceso de la tabla2 y tiene muchos
registros

Se os ocurre algo?

slds
José Luis



_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



RE: Sentencia SQL

2002-10-01 Por tema Victor Velardez BT


Tengo una utilidad EXSQLSTM que se comparta de la siguiente forma 

pgm &valor

dcl &q *Char 500
dcl &subq *char 500 
dcl &valor *char 10 


if &valor ¬= ' ' do 
   chgvar &subq ('WHERE campo1 = "' || &VALOR || '")
enddo

chgvar &q ('SELECT *FROM ARCHIVO ' || &subq |< ' ')

EXSQLSTM &Q 

endpgm 


Espero te sea UTIL 



> -Mensaje original-
> De:   Martinez Calderon, Francisco Jose [SMTP:[EMAIL PROTECTED]]
> Enviado el:   Martes, 01 de Octubre de 2002 07:47 a.m.
> Para: [EMAIL PROTECTED]
> Asunto:   Sentencia SQL
> 
> Buenos días, foreros:
> 
>   Tengo un "problemilla" con una sentencia SQL, a ver si me puedo
> explicar:
> 
>   Quiero realizar una sentencia SQL, para que me recupere los
> registros de un archivo con una condición que dependa de un valor
> introducido por pantalla, al estilo de : "select * from myFile where
> campo1_myFile=? and " pero quiero que cuando el valor de pantalla sea
> "XX", seleccione todos los registros del archivo. ¿Alguna sugerencia?
> 
> Gracias
> 
> Francisco José Martínez
> 
> 
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
> 
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=AVE

La informacion contenida en este correo es para uso exclusivo de los destinatarios del 
mismo.
Esta prohibido a las personas o entidades que no sean los destinatarios de este correo
realizar cualquier tipo de modificacion, copia o distribucion del mismo.
Si Usted recibe este correo por error tenga bien notificar al emisor y eliminarlo.

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



Re: Sentencia SQL

2002-10-01 Por tema Alex . Corretge


Suponiendo que le pasas una variable &PARM, puedes hacer:

Select * from myfile where campo1_myfile = &PARM or &PARM = 'XX'

en &PARM tiene que venir las comillas.

fins aviat...
Àlex Corretgé





"Martinez Calderon, Francisco Jose" <[EMAIL PROTECTED]>
@QUIJOTE.COMBIOS.ES con fecha 01/10/2002 12:47:22

Por favor, responda a [EMAIL PROTECTED]

Tramès per:[EMAIL PROTECTED]


Destinataris: [EMAIL PROTECTED]
Còpia:

Classificat:  ||
  | ( ) Important  |
  | ( ) urgent |
  | ( ) històric   |
  | ( ) temporal   |
  | ( ) bretolada  |
  | ( ) particular |
  ||
Assumpte: Sentencia SQL


Buenos d=EDas, foreros:

 Tengo un "problemilla" con una sentencia SQL, a ver si me puedo
explicar:

 Quiero realizar una sentencia SQL, para que me recupere los
registros de un archivo con una condici=F3n que dependa de un valor
introducido por pantalla, al estilo de : "select * from myFile where
campo1_myFile=3D? and " pero quiero que cuando el valor de pantalla =
sea
"XX", seleccione todos los registros del archivo. =BFAlguna sugerencia?

Gracias

Francisco Jos=E9 Mart=EDnez


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE







_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



RE: Sentencia SQL

2002-10-01 Por tema Fernando Pérez

Hola.

Tres posibles soluciones:

- La que creo más eficiente: si esa sentencia se ejecuta embebida en un
programa, créate la sentencia en un campo de texto, incluyendo la condición
o no en función de si el campo tiene de valor 'XX'. Preparas la sentencia y
la ejecutas.

- Ten dos sentencias, una con la condición y otra sin ella. Si el campo de
pantalla vale 'XX' usas la segunda, y si no la primera.

- Si no la ejecutas dentro de un programa (¿donde, entonces?), puedes hacer
la condición de esta manera: WHERE (campopantalla='XX' or
campo1_myFile=campopantalla). No olvides los paréntesis si tienes más
condiciones.

Saludos.

Fernando Pérez.
Cerámica Saloni. Dpto. Sistemas
*   : 964343434  



-Mensaje original-
De: Martinez Calderon, Francisco Jose
[mailto:[EMAIL PROTECTED]]
Enviado el: martes, 01 de octubre de 2002 12:47
Para: [EMAIL PROTECTED]
Asunto: Sentencia SQL


Buenos días, foreros:

Tengo un "problemilla" con una sentencia SQL, a ver si me puedo
explicar:

Quiero realizar una sentencia SQL, para que me recupere los
registros de un archivo con una condición que dependa de un valor
introducido por pantalla, al estilo de : "select * from myFile where
campo1_myFile=? and " pero quiero que cuando el valor de pantalla sea
"XX", seleccione todos los registros del archivo. ¿Alguna sugerencia?

Gracias

Francisco José Martínez


_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE



RE: Sentencia SQL

2002-10-01 Por tema Juan Carlos Paredes

Si es un campo alfanumérico, se me ocurre que en vez de seleccionar por
igual, selecciones por LIKE, así, cuando quieras seleccionar todos los
registros, sustituye el campo de pantalla por un signo % y te los
seleccionará todos.

Un saludo.

Juan Carlos

> -Mensaje original-
> De:   Martinez Calderon, Francisco Jose
> [SMTP:[EMAIL PROTECTED]]
> Enviado el:   martes, 01 de octubre de 2002 12:47
> Para: [EMAIL PROTECTED]
> Asunto:   Sentencia SQL
> 
> Buenos días, foreros:
> 
>   Tengo un "problemilla" con una sentencia SQL, a ver si me puedo
> explicar:
> 
>   Quiero realizar una sentencia SQL, para que me recupere los
> registros de un archivo con una condición que dependa de un valor
> introducido por pantalla, al estilo de : "select * from myFile where
> campo1_myFile=? and " pero quiero que cuando el valor de pantalla sea
> "XX", seleccione todos los registros del archivo. ¿Alguna sugerencia?
> 
> Gracias
> 
> Francisco José Martínez
> 
> 
> _
> Forum.HELP400 es un servicio más de NEWS/400.
> © Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _
> 
> Para darte de baja, envía el mensaje resultante de pulsar
> mailto:[EMAIL PROTECTED]?body=LEAVE

_
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_

Para darte de baja, envía el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]?body=LEAVE