Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Consulta SQL

Estas en el tema de Consulta SQL en el foro de Oracle en Foros del Web. Hola a todos, estoy intentando crear una consulta para obtener unos datos, pero no consigo terminarla... Tengo una tabla producto (con id_departamento, cod_barras, etc...), una ...
  #1 (permalink)  
Antiguo 30/11/2011, 03:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 47
Antigüedad: 15 años, 4 meses
Puntos: 0
Consulta SQL

Hola a todos, estoy intentando crear una consulta para obtener unos datos, pero no consigo terminarla... Tengo una tabla producto (con id_departamento, cod_barras, etc...), una tabla cesta (con cod_barras, cantidad_vendida, etc...) y una tabla departamento (con id_departamento, nombre, etc...) la consulta en cuestion me pide que para cada departamento obtener el producto mas vendido. Yo he probado con esto:

SELECT d.nombre, c.cod_barras, sum(c.cantidad)
FROM producto p, cesta c, departamento d
WHERE p.cod_barras=c.cod_barras AND p.id = d.id
GROUP BY d.nombre, c.cod_barras
HAVING sum(c.cantidad) = MAX( DISTINCT (SELECT sum(ce.cantidad) FROM cesta ce WHERE c.cod_barras=ce.cod_barras GROUP BY p.id, ce.cod_barras))
ORDER BY d.nombre;

pero esto me devuelve la suma de cada producto y yo lo que quiero es que de cada departamento solo me devuelva el producto mas vendido.

Gracias!
  #2 (permalink)  
Antiguo 30/11/2011, 11:11
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Consulta SQL

Hola Link_OOT,

Entiendo tu pregunta y cual es tu problema.

El modelo que planteas esta bien.
Tabla Producto (con todos los datos del producto incluyendo codigo de barras y Id de departamento)
Tabla Deparmento (con todos los datos del departamento incluyendo Id de departamento)
Tabla Cesta (es la tabla que hace la relacion entre las otras dos)

Y para solucionar tu problema, lo que tenemos que hacer es:
1. cruzar las tres tablas correctamente y obtener un listado de todos los productos, los departamentos y las cantidad vendidas.
2. Ordenar las cantidad vendidas por departamento y traer el nombre de ese producto mas vendido.

Aqui un select para esto

Código SQL:
Ver original
  1. SELECT NOMBRE_DEPARTAMENTO,
  2.        CODIGO_PRODUCTO,
  3.        CANTIDAD_VENDIDA,
  4.        ORDEN
  5.   FROM (
  6. SELECT D.NOMBRE        NOMBRE_DEPARTAMENTO,
  7.        C.COD_BARRAS    CODIGO_PRODUCTO,
  8.        C.CANTIDAD      CANTIDAD_VENDIDA,
  9.        ROW_NUMBER() OVER(PARTITION BY D.NOMBRE ORDER BY C.CANTIDAD DESC) ORDEN
  10.   FROM PRODUCTO     P,
  11.        CESTA        C,
  12.        DEPARTAMENTO D
  13.  WHERE P.COD_BARRAS= C.COD_BARRAS
  14.    AND P.ID_DEPARTAMENTO = D.ID_DEPARTAMENTO
  15.        )
  16.  WHERE ORDEN <= 3

Yo le puse los tres mas vendidos, pero se puede cambiar.

Link_OOT, espero verte de nuevo por aqui y que te sirva la consulta.
Te mando un saludo grande,
Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.
  #3 (permalink)  
Antiguo 01/12/2011, 04:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 47
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta SQL

Muchas gracias, probaré a ver que tal

Etiquetas: select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:44.