Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Estas en el tema de Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos en el foro de Visual Basic clásico en Foros del Web. Cita: Iniciado por gasafonso Private Sub CmdRanking_Click() If DsrListado.rscmdRanking.State = adStateOpen Then DsrListado.rscmdRanking.Close End If DsrListado.CmdRanking Format(DTPicker1.Value, "mm/dd/yyyy"), Format(DTPicker2.Value, "mm/dd/yyyy") 'DsrListado.CmdRanking DTPicker1.Value, DTPicker2.Value ',txtarticulos, Load ...

  #31 (permalink)  
Antiguo 12/06/2009, 18:20
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Cita:
Iniciado por gasafonso Ver Mensaje

Private Sub CmdRanking_Click()
If DsrListado.rscmdRanking.State = adStateOpen Then
DsrListado.rscmdRanking.Close
End If
DsrListado.CmdRanking Format(DTPicker1.Value, "mm/dd/yyyy"), Format(DTPicker2.Value, "mm/dd/yyyy") 'DsrListado.CmdRanking DTPicker1.Value, DTPicker2.Value ',txtarticulos,
Load DtRepRanking
DtRepRanking.Show................................. ...............

el problema es que si le pongo la misma fecha a los dtpicker me tira bien el informe pero si le pongo fechas distintas me pone cualquier cosa
Tio volviendo al inicio del post, no entiendo tu codigo te voy a dar un ejemplo que utilizo para mostrar un reporte con el datareport utilizando un rango de fechas entre 2 DTPicker's solo cambiale la consulta SQL, si con esto no lo resuelves que dios te ayude jeje

Código:
Dim rsFactura As Recordset

Private Sub cmdAceptar_Click()
Dim Sql As String
Set rsFactura = New Recordset

Sql = "SELECT F.numfactura,F.fecha,F.codclie,F.total,F.igv,F.totalfinal FROM factura F WHERE F.fecha BETWEEN #" & Format(dtpDesde, "mm/dd/yyyy") & "# AND #" & Format(dtpHasta, "mm/dd/yyyy") & "#"
rsFactura.Open Sql, dbConex, adOpenStatic, adLockOptimistic
Set drVentas.DataSource = rsFactura

End Sub
  #32 (permalink)  
Antiguo 12/06/2009, 22:12
 
Fecha de Ingreso: febrero-2009
Ubicación: Villa Ocampo - Santa Fe
Mensajes: 100
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

me parece si no estoy equivocado que lo que Gasafonso pide es una consulta que devuelba los 10 productos mas vendidos entre un rango de fechas...si mal no entendí si es asi solo debes hacer un count de la tabla detalle y ordenarlo de forma decendiente y el JOIN solo con la tabla articulos para mostrar el producto.....sin olvidarte el TOP nada mas....espero haberme explicado
saludos
  #33 (permalink)  
Antiguo 14/06/2009, 14:55
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Cita:
Iniciado por ValentinoMolinari Ver Mensaje
me parece si no estoy equivocado que lo que Gasafonso pide es una consulta que devuelba los 10 productos mas vendidos entre un rango de fechas...si mal no entendí si es asi solo debes hacer un count de la tabla detalle y ordenarlo de forma decendiente y el JOIN solo con la tabla articulos para mostrar el producto.....sin olvidarte el TOP nada mas....espero haberme explicado
saludos
Hola ValentinoMolinari, me parece que no tengo que hacer un count sino un sum(suma ) de cantidades vendidas,pero igual no me tira valores

La veerdad que no pense que era tan dificil, estoy arto

gracias
  #34 (permalink)  
Antiguo 14/06/2009, 16:58
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Cita:
Iniciado por gasafonso Ver Mensaje

SELECT TOP 10 Sum(Val(tbDetalleFactura.Cantidad)) AS total, Max(tbArticulos.Descripcion) AS des, Max(tbDetalleFactura.fecha) AS MáxDefecha, Sum(tbDetalleFactura.Subtotal) AS sub, tbDetalleFactura.CodigoProd, Max(tbArticulos.Codigo) AS cod
FROM tbDetalleFactura INNER JOIN tbArticulos ON tbDetalleFactura.CodigoProd = tbArticulos.Codigo
WHERE (((tbDetalleFactura.fecha) Between [?] And [?]))
GROUP BY tbDetalleFactura.CodigoProd, tbDetalleFactura.fecha

Hola gasafonso:
He bajado la base de datos y tengo dos observaciones:
1) INNER JOIN hasta donde tengo entendido se usa con campos clave
2) Es de imaginarnos que en tbDetalleFactura deberian estar todos los codigos de productos existentes en tbArticulos y al revisar los campos el codigo 9 que existe en tbDetalleFactura no se encuentra en tbArticulos, revisa esa parte.

He modificado tu consulta en Access y ha quedado asi, luego lo adaptas para que lo puedas usar con tu programa en la parte de las fechas

Código:
SELECT TOP 10 Sum(Val(tbDetalleFactura.Cantidad)) AS total, Max(tbArticulos.Descripcion) AS des, Max(tbDetalleFactura.fecha) AS MáxDefecha, Sum(tbDetalleFactura.Subtotal) AS sub, tbDetalleFactura.CodigoProd, Max(tbArticulos.Codigo) AS cod
FROM tbDetalleFactura, tbArticulos
WHERE (((tbDetalleFactura.CodigoProd)=[tbArticulos].[Codigo]) AND ((tbDetalleFactura.fecha) Between #8/25/2008# And #11/25/2008#))
GROUP BY tbDetalleFactura.CodigoProd, tbDetalleFactura.fecha
ORDER BY tbDetalleFactura.fecha DESC;

Espero te sirva, ya nos contaras como te fue, saludos


PD, esta es la primera vez que respondo en este foro al cual le estoy muy agradecido por que me ha ayudado en muchos casos.
  #35 (permalink)  
Antiguo 14/06/2009, 17:16
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Cita:
Iniciado por Dalobla Ver Mensaje
INNER JOIN hasta donde tengo entendido se usa con campos clave
creo que vale una aclaracion aqui, los inner join no son exactamente se usan con campos claves

ejemplo: tengo las tablas: tabla1 , table2 yo podria hacer algo asi:

select *
from table1
inner join Table2 on 1 = 1

si ejecuto esta consulta no me va a botar ningun error , es mas el resultado va a ser el numero de filas de table1 x el numero de filas de table2

Ahora claro que a nadie se le ocurriria hacer esto , y en parte tienes razon si es que hacemos un Inner join a una clave la consulta es mucho mas rapida que hacerla a cualquier otra condicion

Solo eso queria aportar ( corrijanme si me equivoque )
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #36 (permalink)  
Antiguo 14/06/2009, 17:44
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Hola boluart, gracias por la aclaracion, siempre se aprende algo.

Se agradece...
  #37 (permalink)  
Antiguo 16/06/2009, 12:21
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Cita:
Iniciado por Dalobla Ver Mensaje
Hola gasafonso:
He bajado la base de datos y tengo dos observaciones:
1) INNER JOIN hasta donde tengo entendido se usa con campos clave
2) Es de imaginarnos que en tbDetalleFactura deberian estar todos los codigos de productos existentes en tbArticulos y al revisar los campos el codigo 9 que existe en tbDetalleFactura no se encuentra en tbArticulos, revisa esa parte.

He modificado tu consulta en Access y ha quedado asi, luego lo adaptas para que lo puedas usar con tu programa en la parte de las fechas

Código:
SELECT TOP 10 Sum(Val(tbDetalleFactura.Cantidad)) AS total, Max(tbArticulos.Descripcion) AS des, Max(tbDetalleFactura.fecha) AS MáxDefecha, Sum(tbDetalleFactura.Subtotal) AS sub, tbDetalleFactura.CodigoProd, Max(tbArticulos.Codigo) AS cod
FROM tbDetalleFactura, tbArticulos
WHERE (((tbDetalleFactura.CodigoProd)=[tbArticulos].[Codigo]) AND ((tbDetalleFactura.fecha) Between #8/25/2008# And #11/25/2008#))
GROUP BY tbDetalleFactura.CodigoProd, tbDetalleFactura.fecha
ORDER BY tbDetalleFactura.fecha DESC;

Espero te sirva, ya nos contaras como te fue, saludos


PD, esta es la primera vez que respondo en este foro al cual le estoy muy agradecido por que me ha ayudado en muchos casos.
Buenisimo, ahi me anduvo, lo unico que me tira todos los articulos y por factura, yo quiero que me sume las cantidades de los articulos vendidos entre esas dos fechas y que me tire solo los 10 primeros articulos

gracias Dalobla, muy agradecisdo
  #38 (permalink)  
Antiguo 26/06/2009, 10:33
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Sigo sin encontrar la solucion por favor si alguien me puede ayudar


muchas gracias
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 17:03.