Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-02-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Sobre el uso de MAX

Hola a todos!!!

A ver si pueden echarme una mano con una consulta que no sale, ¿será la hora? (Son las 23:03)

Simplificaré un poco las tablas para que se entienda:

EMPRESA
-------
EMPRESA_CODIGO PK
EMPRESA_NOMBRE

TIPO
----
TIPO_CODIGO PK
TIPO_NOMBRE

PRODUCTO
--------
PRODUCTO_CODIGO PK
EMPRESA_CODIGO FK
TIPO_CODIGO FK
PRODUCTO_FECHA
PRODUCTO_PRECIO

Lo que quiero obtener es un listado por empresas donde me aparezca:

EMPRESA - TIPO - PRODUCTO - FECHA - PRECIO

Pero que solo me muestre la fecha mayor.

Tengo la consulta así:

Código SQL [-]
 
SELECT PRODUCTO_CODIGO, TIPO_NOMBRE, EMPRESA_NOMBRE, PRODUCTO_NOMBRE, PRODUCTO_FECHA, PRODUCTO_PRECIO, PRODUCTO_DEFECTO 
FROM PRODUCTO JOIN TIPO ON PRODUCTO.TIPO_CODIGO=TIPO.TIPO_CODIGO 
                         JOIN EMPRESA ON PRODUCTO.EMPRESA_CODIGO=EMPRESA.EMPRESA_CODIGO 
           WHERE EMPRESA.EMPRESA_CODIGO=:empresa \
           ORDER BY TIPO_NOMBRE, EMPRESA_NOMBRE, PRODUCTO_NOMBRE, PRODUCTO_FECHA, PRODUCTO_PRECIO

y ahora mismo no veo como hacer para que de cada unión EMPRESA-TIPO me seleccione la fecha mayor.

Gracias de antemano por la ayuda...
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #2  
Antiguo 29-02-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
No me aclaro bien con tu consulta ....

Deseas obtener un listado de la tabla Productos, o un listado de la tabla Empresas ?

Lo digo porque en tu condición 'From' especificas que obtenga los registros de la tabla Productos. Si pudieras indicar un set de datos de terminados como ejemplo, y el resultado que deseas obtener, intentaría ayudarte.

__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 29-02-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por gluglu Ver Mensaje
No me aclaro bien con tu consulta ....

Deseas obtener un listado de la tabla Productos, o un listado de la tabla Empresas ?

Lo digo porque en tu condición 'From' especificas que obtenga los registros de la tabla Productos. Si pudieras indicar un set de datos de terminados como ejemplo, y el resultado que deseas obtener, intentaría ayudarte.

Antes que nada, gracias por responder...
Con éste me quedo en +1 (no en post, si no en deuda contigo )

Quiero obtener un listado de la tabla Productos.

Supongamos que:

Código:
EMPRESA
-------
01 JB MARTINEZ
02 COLABE, SA
 
TIPO
----
11 SEGUNDA
12 PRIMERA
 
PRODUCTO
--------
21  01  11  02/12/07  23,34
22  01  12  01/12/07  20,67
23  02  11  04/12/07  56,67
24  01  11  03/12/07  26,78
25  02  11  07/12/07  34,56
26  01  12  08/12/07  56,78
El listado debería quedar así:

Código:
TIPO     EMPRESA     PRODUCTO     FECHA     PRECIO
---------------------------------------------------   
PRIMERA  JB MARTINEZ 26           08/12/07  56,78
SEGUNDA  COLABE,SA   25           07/12/07  34,56
SEGUNDA  JB MARTINEZ 24           03/12/07  26,78
Es decir, cuando el tipo y la empresa son el mismo, conservo el registro con la fecha mayor.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.

Última edición por Gabo fecha: 01-03-2008 a las 00:02:22.
Responder Con Cita
  #4  
Antiguo 01-03-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
A ver si esto funcionara ....

Código SQL [-]
Select TIPO.TIPO_NOMBRE, EMPRESA.EMPRESA_NOMBRE, PRODUCTO.PRODUCTO_CODIGO,
Max(PRODUCTO.PRODUCTO_FECHA), Max(PRODUCTO.PRODUCTO_PRECIO)
from PRODUCTO
Join TIPO
  On PRODUCTO.TIPO_CODIGO = TIPO.TIPO_CODIGO 
Join EMPRESA
  On PRODUCTO.EMPRESA_CODIGO = EMPRESA.EMPRESA_CODIGO 
Where EMPRESA.EMPRESA_CODIGO = :empresa  // Supongo que esta condición sobra (pero la he dejado por si acaso)
Group By PRODUCTO.EMPRESA_CODIGO, PRODUCTO.TIPO_CODIGO

Insisto .... no lo he probado.

Pero me remito adicionalmente a este hilo

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #5  
Antiguo 01-03-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Ya me he dado cuenta de un fallo del código que acabo de poner.

Supongo que deseas obtener el precio correspondiente a la mayor fecha, no el mayor precio .... no es verdad ?

Con la sentencia que te he puesto, no se obtiene así. Se obtiene por un lado la mayor fecha, y por otro lado el mayor de los precios para cada uno de los registros del Group By ...

A ver .... estoy en ello.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 01-03-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por gluglu Ver Mensaje
Ya me he dado cuenta de un fallo del código que acabo de poner.

Supongo que deseas obtener el precio correspondiente a la mayor fecha, no el mayor precio .... no es verdad ?

Con la sentencia que te he puesto, no se obtiene así. Se obtiene por un lado la mayor fecha, y por otro lado el mayor de los precios para cada uno de los registros del Group By ...

A ver .... estoy en ello.
Bueno, justo iba a postear...

Además, con los group by de esa forma da el error de "referencia de columna inválida" y al ajustarlo a los campos del select no filtra por el mayor, sino que los muestra todos.

He visto también la solución del otro hilo, voy a intentar adaptarla...
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Articulo sobre la facilidad de probar componentes open source en windows sobre linux gmontes Noticias 0 22-08-2007 22:34:16


La franja horaria es GMT +2. Ahora son las 23:45:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi