0 Usuarios y 2 Visitantes están viendo este tema.
« anterior próximo »
Páginas: [1]
|
 |
|
Autor
|
Tema: SQL: No me doy cuenta como usar el GROUP BY (Leído 2706 veces)
|
x-PsicoSyS-x
Principiantes
Desconectado
Mensajes: 149
|
Hola, tego un re problema... no me doy cuenta como hacer una consulta SQL! xD la cosa es asi, se supone que administro una farmacia y tengo que diseñar la base de datos que esta en el siguiente link http://www.gigasize.com/get.php?d=3psyts1pmzfy la consigna del ejercicio dice asi: 4.4. Realizar un consulta que informe la mayor venta por tipo de medicamento (jarabe, comprimido, pomada, etc.). Pego todo el enunciado: EJERCICIOS 4. La gestión de una farmacia requiere poder llevar control de los medicamentos existentes, así como de los que se van vendiendo, para lo cual se pretende diseñar un sistema acorde a las siguientes especificaciones: En la farmacia se requiere una catalogación de todos los medicamentos existentes, para lo cual se almacenará un código de medicamento, nombre del medicamento, tipo de medicamento (jarabe, comprimido, pomada, etc.), unidades en stock, unidades vendidas y precio. Existen medicamentos de venta libre, y otros que sólo pueden dispensarse con receta médica. La farmacia adquiere cada medicamento a un laboratorio, o bien los fabrica ella misma. Se desea conocer el código del laboratorio, nombre, teléfono, dirección, fax así como el nombre de la persona de contacto. Los medicamentos se agrupan en familias, dependiendo del tipo de enfermedades a las que dicho medicamento se aplica. Consultas: 4.1. Realizar una consulta que informe nombre del medicamento, nombre del laboratorio y unidades en stock. 4.2. Realizar un consulta que informe nombre, unidades disponibles y precio unitario de los artículos de un determinado laboratorio. 4.3. Realizar un consulta que informe nombre del medicamento, unidades en stock, nombre y teléfono del laboratorio de todos aquellos productos que pasen su punto de pedido. 4.4. Realizar un consulta que informe la mayor venta por tipo de medicamento (jarabe, comprimido, pomada, etc.). Alguna sugerencia?
|
|
|
|
|
En línea
|
Kevin Mitnick :| un idolo... :|
|
|
|
|
snf
|
SELECT * MAX(cantidad_vendida) FROM ventas GROUP BY tipo_medicamento
|
|
|
|
|
En línea
|
|
|
|
x-PsicoSyS-x
Principiantes
Desconectado
Mensajes: 149
|
hola snf!! gracias por tu colaboracion! copie y pegue el segmento que me pusiste ahi pero directamente no me "compila" (no se si aca tambien se dice asi... jajajA) por otro lado si ejecuto la siguiente consulta: Code (sql): SELECT familia.famnombre AS Familia, MAX(medicamento.medvendido) AS Ventas FROM medicamento INNER JOIN familia ON familia.famcod=medicamento.famcod GROUP BY familia.famnombre;
me tira bien los resultados... pero me falta el nombre del medicamento mas vendido, para eso pense lo siguiente: Code (sql): SELECT familia.famnombre AS Nombre, MAX(medicamento.medvendido) AS Ventas, medicamento.mednombre AS Medicamento FROM medicamento INNER JOIN familia ON familia.famcod=medicamento.famcod GROUP BY familia.famnombre;
pero aca me tira un error de que falta medicamento.mednombre porque no esta incluido en el group by... y si lo pongo me agrupa por medicamento y por familia... osea que me tira la mayor de entre esas dos... osea todos los registros... :S Tambien prove con el DISTINCT pero me tiro error de que entra en conflicto con el GROUP BY... Alguna pista? Puedo hacer que primero me busque algo y despues me busque otra cosa en vase a eso? es decir, que me agrupe por el campo"famcod" de la tabla medicamento y que a esos resultados una vez que los tenga le saque el nombre del medicamento y el nombre de la familia (que esta en otra tabla aparte)? Gracias por su tiempO!
|
|
|
|
|
En línea
|
Kevin Mitnick :| un idolo... :|
|
|
|
|
Phantom Lord
|
HOla El error te lo tira porque tenes que agregar el campo tambien al order by , aca te dejo la solucion y un ordenamiento para que se visualice mejor , si queres optimizarla esta en vos pero asi funciona me llevo un rato largo proqeu hace muchoqeu no veo sql pero lo pude sacar. Code (sql): SELECT familia.famnombre AS Familia, MAX(medicamento.medvendido) AS Ventas, medicamento.medNombre AS Nombre FROM medicamento INNER JOIN familia ON familia.famcod=medicamento.famcod GROUP BY familia.famnombre, medicamento.medNombre, medicamento.medvendido ORDER BY medicamento.medvendido DESC;
Como digo Richard stallman , la programacion es como un poema , trata de que sea legible, ordenalo antes de poner un codigo asi se lee mejor. Ahora si sigo hablando con net que me caga a pedo que no le doy bola jaja. Salu2 y suerte
|
|
|
|
« Última modificación: Abril 24, 2010, 11:34:39 por Phantom Lord »
|
En línea
|
Click En la imagen Para ingresar A Mi Web - Sumate a la comunidad Fantasma
|
|
|
x-PsicoSyS-x
Principiantes
Desconectado
Mensajes: 149
|
lo consulte con el profesor y me dijo que al tener el campo medicamento.mednombre me agrupaba todo el registro completo, es decir: familia.famnombre + MAX(medicamento.medvendido) + medicamento.mednombre y lo resolvimos sacando el campo de medicamento.mednombre, cuando veamos funciones en SQL Server subo la respuesta!!  por ahora el codigo quedo asi: Code (sql): SELECT DISTINCT familia.famnombre AS Familia, MAX(medicamento.medvendido) AS Ventas FROM medicamento INNER JOIN familia ON familia.famcod=medicamento.famcod GROUP BY familia.famnombre;
Muchas gracias por la ayuda!! fpusderkis
|
|
|
|
|
En línea
|
Kevin Mitnick :| un idolo... :|
|
|
|
|
Phantom Lord
|
eso es lo mismo que ya habias hecho abajo. Con esa sentencia no estas mostrando el nobre del medicamento mas vendido, solo la familia y la cantidad de ventas. No se que es lo que tenes que hacer , seria bueno empezar por ahi asi no nos rompemos el bocho al pedo. Segun lo que dice en 4.4. Realizar un consulta que informe la mayor venta por tipo de medicamento (jarabe, comprimido, pomada, etc.). La solucion que encontre que muestre, la familia , la venta y el medicamento es este. Code (sql): SELECT familia.famnombre AS Familia, MAX(medicamento.medvendido) AS Ventas, medicamento.medNombre AS Nombre FROM medicamento INNER JOIN familia ON familia.famcod=medicamento.famcod GROUP BY familia.famnombre, medicamento.medNombre, medicamento.medvendido ORDER BY medicamento.medvendido DESC;
Si lo queres hacer con distinct tenes que quitarle el order by
|
|
|
|
|
En línea
|
Click En la imagen Para ingresar A Mi Web - Sumate a la comunidad Fantasma
|
|
|
|
Glifux
|
Todo lo que va en el select, va en el group by.
Sino nunca va a andar :p
Salu2, Martin
|
|
|
|
|
En línea
|
|
|
|
GIl
User Nuevo
Desconectado
Mensajes: 3
|
hola alguein realizo este ejercicio y me lo puede mostrar o enviarme el archivo en sql mi correo es jojos37@hotmail.com o me dicen donde lo descargo les estaria muy agradecido muchas gracias
|
|
|
|
|
En línea
|
|
|
|
|
 |