FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
2 SubConsultas con Maximo y Minimo
Las Consultas las hago en FireBird 1.5 con IbExpert.
Tengo el siguiente problema, lo que quiero es mostrar en una sola consulta el Valor Máximo y Mínimo con sus respectivos campos cada uno, Tengo la siguiente Tabla: TOPE ! TOPELISTA ! TOPEMAY ------------------------------- 11.50 ! 0.89 ! 0.74 11.66 ! 0.99 ! 0.78 11.80 ! 0.89 ! 0.78 11.84 ! 0.79 ! 0.68 Quiero el valor Máximo y Mínimo del campo "TOPE " que a la vez quiero que me visualice su respectivo valor de TOPELISTA y TOPEMAY como por Ejemplo: El Maximo sería = 11.84 ! 0.79 ! 0.68 El Mínimo sería = 11.50 ! 0.89 ! 0.74 Estos datos en una sola consulta. Ya lo hice asi pero no me funciona: Select Max(Tope) TopeMax,TopeLista ,TopeMay, Min(Tope) TopeMin,TopeLista ,TopeLista From Tabla1_marcas Where Marca='CAJAS 44' and Grupo='CARTON' Group By TopeLista,TopeMay Por lo que quiero que se me visualice asi: TopeMax ! TopeLista ! TopeMay ! TopeMin ! TopeLista1 !TopeMay1 11.84 ! 0.79 ! 0.68 ! 11.50 ! 0.89 ! 0.74 Cualquier sugerencia se los agradecería muchisimo. Última edición por AGAG4 fecha: 02-09-2004 a las 00:56:40. Razón: Correción |
#2
|
|||
|
|||
La consulta que quieres realizar, si bien es factible, seguramente te será muy lenta de la única forma que, a estas horas de la mañana se me ocurre.
Debido a que quieres el máximo y el mínimo, has de hacer subconsultas pero, una subconsulta sólo puede devolver un valor, por lo que se ha de lanzar una subconsulta para cada uno de los valores que quieres retornar, es decir, 6 Por esto, yo te recomiendo otra cosa, seguramente mucho más eficaz. O bien te creas un procedimiento almacenado que te devuelva esos valores, o bien lanzas una UNION del max y min y, por programa, montas la estructura deseada |
#3
|
||||
|
||||
Gracias
Muchas Gracias Sr. Xavier Matínez por su respuesta voy a tomar en cuenta su sugerencia... De antemano Gracias....!!!!!
|
#4
|
|||
|
|||
yo pienso q deberias de hacer dos consultas unidas del siguiente modo:
select TOPE,TOPELISTA,TOPEMAY from ..... WHERE TOPE=MAX(TOPE) or TOPE=MIN(TOPE) group by...... pruebalo y me dices... |
#5
|
||||
|
||||
oki
Ya lo probe, una pregunta como se haria en el caso de la intrucción "UNION" ???? para juntar el Máximo y el Mínimo con sus respectivos Topes.
Ahora hice pruebas como me dijo pero me marca un error, que me indica que tengo que poner la Clausula Having despues del Group By, por lo que hago esto: Select TOPE,TOPELISTA,TOPEMAY From Tabla_Marcas WHERE Marca='BIRLOS' and Grupo='TRACK' group by TOPE,TOPELISTA,TOPEMAY HAVING TOPEDOLAR=MAX(TOPEDOLAR) or TOPEDOLAR=MIN(TOPEDOLAR) funciona diferente a lo que quiero, que me visualice Solo un registro en donde aparezca el Tope Máximo con sus Topes(TOPELISTA,TOPEMAY) junto con el Tope Mínimo también con sus Topes(TOPELISTA,TOPEMAY) . De antemano Gracias por contestarme.... Última edición por AGAG4 fecha: 02-09-2004 a las 19:38:52. Razón: Correción |
#6
|
||||
|
||||
Hola.
En este caso, no estoy de acuerdo con Xavi. Con los índices adecuados esa consulta con dos subconsultas será completamente eficaz (y si no lo he entendido mal, tendria el mismo rendimiento que calcularlo mediante un procedimiento almacenado). NOTA : En este caso, el índice adecuado no es un índice sobre varios campos, sinó un índice compuesto, es decir un índice por varios campos (los campos de la agrupación más el campo por el que se maximiza). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#7
|
||||
|
||||
Hola.
Cita:
es decir : select NOMBRE, APELLIDOS from CLIENTES union select NOMBRE, APELLIDOS from PROVEEDORES Te va a sacar todos los registros de las tablas Clientes y Proveedores. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
|