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 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=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

Responder a