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

Consulta sql

Estas en el tema de Consulta sql en el foro de Bases de Datos General en Foros del Web. Hola amigos! tengo una tabla de ventas, los campos importantes son numero_venta, numero_caja(cada dia es una caja diferente), articulo. Cada numero de venta puede tener ...
  #1 (permalink)  
Antiguo 30/07/2015, 09:28
 
Fecha de Ingreso: enero-2004
Ubicación: vitoria
Mensajes: 9
Antigüedad: 20 años, 3 meses
Puntos: 0
Consulta sql

Hola amigos!

tengo una tabla de ventas, los campos importantes son numero_venta, numero_caja(cada dia es una caja diferente), articulo. Cada numero de venta puede tener varios articulos vendidos.

Quiero crear en vb6 un recorset para modificar los registros que cumplan las siguientes condiciones.

1- un numero de caja determinado
2- el articulo 200
3- QUE ESE NUMERO DE VENTA TENGA MAS DE 2 ARTICULOS VENDIDOS

la tercera me trae de cabeza y despues de intentar un monton de cosas no consigo hacer todo en un a sola consulta. Lo tengo hecho en varios pasos pero la aplicacion se relentiza mucho y me gustaria conseguirlo con una sola consulta, sin tener que recorrer todos los registros de la tabla pare ver si cumplen las condiciones.

tengo lo siguiente, que aunque no me vale es lo que he intentado usar
Código SQL:
Ver original
  1. SELECT   n_venta, caja, COUNT(*) AS cuenta
  2. FROM ventas
  3. GROUP BY n_venta,caja
  4. HAVING (caja = 1227) AND (COUNT(*) > 2)

con esto consigo sabes que numeros de venta tienen mas de dos articulos, pero aqui ya no puedo filtrar por el articulo 200 porque los registros estan agrupados. He intentado con el comando UNION pero no me vale porque los campos deben de coincidir y no me cuadra, a ver si podeis hecharme una mano

gracias

Última edición por gnzsoloyo; 30/07/2015 a las 09:57
  #2 (permalink)  
Antiguo 30/07/2015, 09:39
 
Fecha de Ingreso: julio-2015
Ubicación: Lima - San Miguel
Mensajes: 13
Antigüedad: 8 años, 9 meses
Puntos: 1
Respuesta: Consulta sql

Hola, joshua_vi
Primero que todo es mejor tener las consultas separadas para la solución a un problema, por que es mas rapido una modificación y mantenimiento, segundo que con una consulta que haga todo vas a tener que usar recursividad y ese proceso es mas lento y si es necesario, no lo hagas con una consulta guardalo en un store procedure para que lo uses en otros proyectos.
Saludos Cordiales.
  #3 (permalink)  
Antiguo 30/07/2015, 09:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta sql

Con eso tienes las cajas que tiene mas de 2 productos ahi vamos bien:

Código SQL:
Ver original
  1. SELECT n_venta, caja, COUNT(*) AS cuenta
  2. FROM ventas
  3. GROUP BY n_venta,caja
  4. HAVING (caja = 1227) AND (COUNT(*) > 2)

y si haces esto:

Código SQL:
Ver original
  1. SELECT * FROM articulos AS t1
  2. LEFT JOIN (
  3. SELECT n_venta, caja, COUNT(*) AS cuenta
  4. FROM ventas
  5. GROUP BY n_venta,caja
  6. HAVING (caja = 1227) AND (COUNT(*) > 2)
  7. ) AS t2 ON (t1.caja=t2.caja)
  8. WHERE t1.articulo='tu articulo'

No ocupas hacer procedures ni consultas aparte ;), ni ralentizas el server, ni usas recursividad ;) solamente usas subqueries :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select
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 22:25.