Cita:
Iniciado por gnzsoloyo Usando MAX() y GROUP BY, como en cualquier otro DBMS...
Son consultas estandar. De manual... Las encontrará en cualquier tutorial.
SELECT *,MAX(cant) FROM tabla_ppal GROUP BY id_empresa
Resultado de la consulta:
id_empresa cant
A 78
B 10
C 19
Ese problema de arriba ¿se soluciona asi verdad?, ahora supongamos que tengo esa misma tabla, es la principal, aparte tambien tengo una tabla detalle donde guardo un monton de registros.
Ojala me explique bien, pero quiero hacer una consulta de la tabla detalle, que me traiga los registros detalle pero solo de aquellos registros que en la tabla principal son los maximo en su cantidad. Por ejemplo:
SELECT * FROM tabla_detalle td
INNER JOIN
(SELECT *,MAX(cant) FROM tabla_ppal GROUP BY id_empresa) tp ON td.id_poder=tp.id_poder;
Resultado de la consulta
id_empresa cant
A 78 <-- dos registros de esta
B 10 (cero de esta)
C 19 (cero de esta)
Hasta ahi me salen solo los registros detalle de los maximos registros en la principal. Los que no me aparecen con registros es porque no tienen registros detalle, asi de simple. Asi que en total me salen solo dos registros.
Peeeero lo que ocupo en realidad es que si un registro de la tabla principal no tiene detalle, entonces que me arrojara el detalle del que le sigue. Por ejemplo, basandonos en la tabla que puse anteriormente.
A 12
A 19
A 2
A 78 <-- este si tiene detalle asi que no hay problema
B 10 <-- este es el mayor pero no tiene detalle
B 8 <-- tengo que mostrar los registros detalle de este por ser el que le sigue
B 5
C 6 <-- le sigue este y lo muestro, en caso de que no tenga no muestro nada.
C 12 <--le sigue este pero tampoco tiene
C 19 <-- este es el mayor pero no tiene detalle
Eso no lo he podido resolver. Ojala alguien me diera una idea de que puedo haceeeeer.