![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Cita:
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. |
|
#2
|
||||
|
||||
|
Sobre la otra solución:
La adapté y quedo así:
Pero el problema es que al hacer "SELECT MAX(PRODUCTO.PRODUCTO_FECHA)" le estoy diciendo arbitrariamente que coloque en todos los registros que obtenga la fecha mayor y no que muestre sólo la mayor
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
|
#3
|
||||
|
||||
|
Por más que lo pienso, creo que no es posible con un simple 'Select'.
![]() El error que indicas arriba de 'referencia de columna inválida' no es mayor problema. Bastaría incluir todos aquellos campos que no sean 'Max' en el Group By, aunque sean los respectivos nombres de empresas y tipos obtenidos de los join. Analizando el asunto .... necesitas obtener el 'Producto_Codigo' para cada uno de los valores del Max(Fecha). Una vez que tuvieras ese 'Producto_Codigo' podrías obtener el precio correspondiente a ese registro. Y ahí veo el problema. No sé cómo obtenerlo. Lo único que se me ocurre es incluir dos DataSet's en tu aplicación, uno para calcular el Max(Fecha) por cada Producto, y el segundo DataSet que sea 'detalle' del primer DataSet 'maestro', y esten referenciados por esa columna 'Maxima Fecha' obtenida. Y ya en el segundo DataSet buscas el 'Producto_Codigo' y su correspondiente 'Precio' asociado.Si no lo haces con dos DataSet's, entonces veo la necesitad de implementar un Stored Procedure que te lo resuelva. Con ello si que no sería mayor problema. Si a alguien se le ocurre otra solución, bienvenida sea ! ![]()
__________________
Piensa siempre en positivo ! |
|
#4
|
||||
|
||||
|
Pues yo tampoco veo muy claro el asunto. Entre las dos opciones que me das, creo que me quedo con el procedimiento almacenado.
De todas formas, lo veré mañana que ya es la 1:00 y me levanto a las 5:30 ![]() ¡Gracias por la ayuda gluglu! ![]()
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
|
#5
|
||||
|
||||
|
Hola Gabo
Nose si te he entendido, pero talvez podrías hacer una subconsulta para obtener las fechas maximas agrupado por tipo y empresa.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. Última edición por Caro fecha: 01-03-2008 a las 16:19:38. |
|
#6
|
||||
|
||||
|
Bravo, Caro !
![]() A primera vista me parecía que no funcionaría, pero haciendo ciertas pruebas con sets de datos propios, creo que sí, que funciona. ![]() A ver si Gabo puede probar esa sentencia con sus propios datos y confirmar que el Select devuelve los datos como él desea.
__________________
Piensa siempre en positivo ! |
|
#7
|
||||
|
||||
|
Pues va a ser que no ....
Tal y como estoy dándole a enviar al post anterior, me doy cuenta que no funciona correctamente. Al probarlo con mi propio set de datos, resulta que la condición del Max la estaba poniendo a un campo cuyos valores son únicos. Es decir, dos registros diferentes no pueden tener el mismo valor de ese campo. Aplicado al ejemplo de Gabo. Si la fecha fuera única para cada registro, entonces funcionaría. En el ejemplo que ha puesto Gabo, las fechas si son únicas. Pero Gabo tendría que confirmar si en una misma fecha puede haber dos Empresas diferentes con precios diferentes. Si fuera así, debo de entender que no funcionaría. Pero aun así, me queda la duda. En cualquier caso, deberíamos de saber si la fecha es única. ![]()
__________________
Piensa siempre en positivo ! |
|
#8
|
||||
|
||||
|
Efectivamente, lo he probado y creo ratificarme en mi comentario anterior.
Con el set de datos de Gabo funciona perfectamente, y la lógica es correcta. En cambio, si las fechas se pueden repetir, no funciona. Por ejemplo he probado con los siguientes registros en la Tabla Productos: Código:
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 27 02 11 08/12/07 99,99 28 02 12 08/12/07 88,88 29 02 12 08/12/07 77,77 Código:
TIPO EMPRESA PRODUCTO FECHA PRECIO --------------------------------------------------- PRIMERA JB MARTINEZ 26 08/12/07 56,78 PRIMERA COLABE 28 08/12/07 88,88 PRIMERA COLABE 29 09/12/07 77,77 SEGUNDA JB MARTINEZ 24 03/12/07 26,78 SEGUNDA COLABE 27 08/12/07 99,99 ![]()
__________________
Piensa siempre en positivo ! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|