El tema es asi, para cada "proveedor" mostrar sus datos (todos) y la menor entrega hecha de componentes de cada uno de ellos.
Las tablas son:
Proveedores (codProv, nomProv, dirProv, telProv)
Prov-Gen-Comp (codProv, codGen, numSerComp, fecha, cant)
de donde la cantidad de componentes entregados es la columna "cant" de la tabla Prov-Gen-Comp
entonces lo que hice fue:
SELECT P.*, PGC.cant
FROM PROVEEDORES P, PROV_GEN_COMP PGC
WHERE P.codprov = PGC.codprov
AND PGC.cant = (SELECT MIN (PGC.cant)
FROM PROV_GEN_COMP);
como no me dejo hacerle un MIN en la primer linea sin ponerle al final un group by, me decidi a hacer una subconsulta por probar y si me deja sin problemas, pero ahora el tema es que me lista TODOS los proveedores, por ejemplo lo que me esta devolviendo la consulta asi como esta es:
CODPROV NOMPROV DIRPROV TELPROV CANT
---------------------- ------------------------------ ------------------------------ ------------------------------ ----------------------
3 Cuqui Lacalle Av.Italia 1223 225321 2
12 Horacio Peralta Mariano Uriarte 8754 2623145 4
4 Tanque Silva Jackson 5523 24112365 5
8 Pato Sosa Yi esq. 18 de julio 2745232 6
5 Sebastian Viera Cerro Largo 1524 2147823 7
3 Cuqui Lacalle Av.Italia 1223 225321 8
6 filas seleccionadas
cuando solo deberia mostrar una sola vez Cuqui Lacalle con la menor entrega, o sea 3 junto con los demas... o sea tendrian q aparecer todos esos menos cuqui lacalle con 8 entregas.. no se si se entiende..
alguna idea de como solucionar esto o pista a ver en que le estoy errando?
Gracias!
No termino de entender que es lo que querés proyectar.
En español la consulta sería:
"Dame la información del proveedor que tiene menos entregas hechas, agregándole el número de componentes entregados"
o
"Dame la información de todos los proveedores, agregando el número de componentes entregados"
?
De última pega el resultado que queres ver con tu consulta, onda:
CODPROV NOMPROV DIRPROV TELPROV CANT
---------------------- ------------------------------ ------------------------------ ------------------------------ ----------------------
3 Cuqui Lacalle Av.Italia 1223 225321 2
es asi:
Para cada proveedor mostrar sus datos y la menor entrega hecha de componentes de cada uno de ellos.
y deberia retornar:
---------------------- ------------------------------ ------------------------------ ------------------------------ ----------------------
3 Cuqui Lacalle Av.Italia 1223 225321 2
12 Horacio Peralta Mariano Uriarte 8754 2623145 4
4 Tanque Silva Jackson 5523 24112365 5
8 Pato Sosa Yi esq. 18 de julio 2745232 6
5 Sebastian Viera Cerro Largo 1524 2147823 7
creo que por lo que has dicho con un group by y un min, puedes hacer lo que quieres, agrupas todos para que te salgan una sola ves, y un min te sale el que menos trae, porque no quieres hacer un group by?
Donde iria el group by? es que nunca lo use mucho aun, lo puse en la consulta y me tiro error
listo ya lo solucione con el group by:
SELECT P.CODPROV, P.DIRPROV, P.NOMPROV, P.TELPROV, MIN(PGC.cant)
FROM PROVEEDORES P, PROV_GEN_COMP PGC
WHERE P.codprov = PGC.codprov
GROUP BY P.CODPROV, P.DIRPROV, P.NOMPROV, P.TELPROV;
estaba tratando de hacer group by con P.* y me daba error, habia que escribir todos los campos, ese era el problema.. muchas gracias!
supongo que con poner solamente groupby codprov pues suficiente, porque si por cosa de la vida dos empresas diferentes tienen el mismo direccion o nombre o x, pues te va a acausar un pequeño problema, el groupby solo al cod va a ser mas que suficiente, ademas pones al motor a trabajar menos.
probe con agruparlo solo con codprov como decis pero el oracle me larga un error, cuando los pongo a todos no... sera que funciona asi oracle?