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. Hola mi pregunta es compleja haber: Yo quiero que este comando(cmdRanking) me tire los 10 productos mas vendidos Como dato tengo que la : Una ...

  #1 (permalink)  
Antiguo 29/05/2009, 18:22
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Hola mi pregunta es compleja haber:

Yo quiero que este comando(cmdRanking) me tire los 10 productos mas vendidos
Como dato tengo que la :
Una tabla que se llama Tbarticulos
otra tbdetallefactura

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


y un formulario que tiene 2 dtpicker que seria las varibles (?) y las paso asi :

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

Muchas gracias
  #2 (permalink)  
Antiguo 31/05/2009, 08:49
 
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

que tal si cambias tu consulta por :
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
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
order by Sum(Val(tbDetalleFactura.Cantidad)) desc

o mejor dicho solo aumentale la ultima linea
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #3 (permalink)  
Antiguo 01/06/2009, 12:20
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

No, no me tira ningun registro


Desde ya 1.000.000 de gracias


PD: Se ve que es dificil por que hace 4 meses que estoy con este problema y nadie me lo sabe responder
  #4 (permalink)  
Antiguo 01/06/2009, 14:03
 
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

sino te retorna nigun registro quizas tenga problemas la condicion
quitale la condicion where

WHERE (((tbDetalleFactura.fecha) Between [?] And [?]))

y pruebalo nuevamente

y reemplaza:

GROUP BY tbDetalleFactura.CodigoProd, tbDetalleFactura.fecha

por

GROUP BY tbDetalleFactura.CodigoProd
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #5 (permalink)  
Antiguo 01/06/2009, 14:39
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

yo paso las variables de esta forma e3sta bien ?

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
  #6 (permalink)  
Antiguo 01/06/2009, 15:34
 
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

mira hasta donde tengo entendido eso depende de la version de tu sql y del idioma, para saber que formato tienes puedes abrir tu sql y ejecuta select GetDate(), y de ahi te fijas cual es tu formato, si es dd/MM/yy o MM/dd/yy o cualquiera que sea.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #7 (permalink)  
Antiguo 01/06/2009, 18:27
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Desacuerdo Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Sigo igual, voya probar un poco mas, pero si le saco el WHERE me tira todas las fechas y sin agrupar por el codigo y desacomodadas


Me esta volviendo loco
  #8 (permalink)  
Antiguo 01/06/2009, 20:56
 
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

la agrupacion deberia ser asi:


GROUP BY tbDetalleFactura.CodigoProd, year(tbDetalleFactura.fecha ), month(tbDetalleFactura.fecha )


solo los agrupa por codigo, año y mes
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #9 (permalink)  
Antiguo 02/06/2009, 11:15
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Pregunta Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

No pasa nada , ecima tengo que entragar un trabajo el jueves


A vos te molesta si te mando el proyecto por mail para que lo mires?


gracias
  #10 (permalink)  
Antiguo 03/06/2009, 10:03
 
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

Porque no cuelgas la base de datos en un lugar publico donde todos podamos verlo y ayudarte.
PD: Creo que bastaria con la base de datos y asi te envio la consulta respectiva
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #11 (permalink)  
Antiguo 03/06/2009, 12:43
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Sonrisa Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Como se cuelga una base de datos y Donde se "cuelga" ?


No soy muy experto de en esto ja ja


gracias
  #12 (permalink)  
Antiguo 03/06/2009, 13:17
 
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

nose hay muchos sitios como sendspace , creas tu cuenta , la subes y nos envias el enlace del archivo.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #13 (permalink)  
Antiguo 03/06/2009, 19:47
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Busqueda Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

hola Boluart

ya lo colge en


http://www.sendspace.com/file/j5m7q4


Yo lo que quiero es que me muestre

tabla
la cantidadVendida(tbdetallefactura)
descripcion (tbarticulos)
precio (tbdetallefactura)
total (tbdetallefactura)
CodidoProd (tbarticulos)
numFactura (tbdetallefactura)


Gracias

Where tbdetallefactura.CodigoProd =tbarticulos.codigo
  #14 (permalink)  
Antiguo 04/06/2009, 04:21
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Hola, esto es solo una sugerencia...

he visto tu bd y pienso que deberías poner una id única en cada tabla, yo particularmente no veo la forma de relacionar entre una tabla y otra.

Saludos.
  #15 (permalink)  
Antiguo 04/06/2009, 06:56
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

Puedee ser que tengas Razon gogupe , pero la verdad que nunca me maneje con id y no se como hacerlo


Yo las relaciono por los codigo de productos


gracias
  #16 (permalink)  
Antiguo 04/06/2009, 08:53
 
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

haber si sale con esto:

select CodigoProd , MAX(Descripcion) AS 'PRODUCTO', year(fecha) as 'AÑO', MONTH(fecha) AS 'MES'
from tbDetalleFactura
inner join tbarticulos on tbarticulos.Codigo = tbDetalleFactura.CodigoProd
group by CodigoProd , year(fecha), MONTH(fecha)
order by CodigoProd , year(fecha), MONTH(fecha)

lo probe con access 2007 , solo faltaria ponerle la condicin de fechas
y el limite de registros que quieres ver TOP 5
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #17 (permalink)  
Antiguo 04/06/2009, 11:10
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

Muy bueno , pero lo que yo necesito es que me tire lo vendido entre Dtpicker1 y dtpicker2 que me sume los valores

Ejemplo


Desde 01/01/08 al 01/05/08
cod descripcion cantidad Precio
1 Agroquimicos 10 2110,51
2 Semillas 40 2845,00



donde precio es la sumatoria de todos los precios vendidos



Gracias capó
  #18 (permalink)  
Antiguo 04/06/2009, 11:46
 
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

select CodigoProd , MAX(Descripcion) AS 'PRODUCTO', sum(cantidad) as 'suma cantidad', sum(precio) AS 'suma precioa'
from tbDetalleFactura
inner join tbarticulos on tbarticulos.Codigo = tbDetalleFactura.CodigoProd
group by CodigoProd
order by CodigoProd


y por ultimo le agregas la condicion where con las fechas
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #19 (permalink)  
Antiguo 04/06/2009, 13:36
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

Lo probe en access y no me tira ningun dato , le cambio dd x mm(mm/dd/aaaa) y ahi si me lo da

SELECT CodigoProd, MAX(Descripcion) AS ['PRODUCTO'], sum(cantidad) AS ['suma cantidad'], sum(total) AS ['suma precioa']
FROM Tabla1 INNER JOIN tbarticulos ON tbarticulos.Codigo = Tabla1.CodigoProd
WHERE Tabla1.fecha between # 5/09/2009 # and #5/09/2009 #
GROUP BY CodigoProd
ORDER BY CodigoProd;


Donde 5 es el mes


Luego tengo que reemplazar por las variables
  #20 (permalink)  
Antiguo 05/06/2009, 14:40
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

Mi Sentencia es estay no pasa nada

SELECT tbDetalleFactura.CodigoProd, MAX(tbarticulos.Descripcion) AS `PRODUCTO`, SUM(tbDetalleFactura.cantidad) AS `suma cantidad`, SUM(tbDetalleFactura.subtotal) AS `suma precio` FROM tbDetalleFactura INNER JOIN tbarticulos ON tbarticulos.Codigo = tbDetalleFactura.CodigoProd WHERE tbDetalleFactura.fecha
WHERE (((tbDetalleFactura.fecha) Between [?] And [?]))
ORDER BY tbDetalleFactura.CodigoProd
  #21 (permalink)  
Antiguo 05/06/2009, 15:23
 
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 gasafonso Ver Mensaje
Mi Sentencia es estay no pasa nada

Pero por lo menos ya te devuelve valores?
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #22 (permalink)  
Antiguo 05/06/2009, 16:04
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

No , no me reconoce el comamdo

No tira ningun dato da error



gracias
  #23 (permalink)  
Antiguo 05/06/2009, 16:22
 
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 gasafonso Ver Mensaje
No , no me reconoce el comamdo
No tira ningun dato da error
gracias
Lo mas practico en estos casos es abrir tu base de datos en Access ahi hacer la consulta (Generar el codigo SQL) y luego en VB6 copiar ese codigo,

A que te refieres con que no te reconoce el comando?
y por cierto cual es el error que retorna?
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #24 (permalink)  
Antiguo 05/06/2009, 17:35
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 7 meses
Puntos: 1
Desacuerdo Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Yo ejecute esta SQL em access y me la tira bien

SELECT TOP 5 CodigoProd, MAX(Descripcion) AS ['PRODUCTO'], sum(cantidad) AS ['suma cantidad'], sum(subtotal) AS ['suma precioa']
FROM Tabla1 INNER JOIN tbarticulos ON tbarticulos.Codigo = Tabla1.CodigoProd
WHERE Tabla1.fecha between #4/21/2009 # and #5/18/2009 #
GROUP BY CodigoProd
ORDER BY CodigoProd;


Pero Cuando la paso a access que debo cambiar esas fecha por variables no me reconoce en Comando del DataEnvironment



gracias
  #25 (permalink)  
Antiguo 08/06/2009, 18:34
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Me acabas de mandar un mensaje privado, estoy bajando la base de datos...

Decime BREVEMENTE lo que queres hacer... Lei todo esto, y lei el mensaje privado y se mezclo todo... Decime exactamente lo que necesitas aca
  #26 (permalink)  
Antiguo 09/06/2009, 07:03
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

Quiero listar los 5 productos mas vendido entre 2 fechas( que las cargo como variables)

en un formulario
  #27 (permalink)  
Antiguo 09/06/2009, 19:24
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

Hola, que queres hacer mostrar un reporte..??? con el DataReport?? simplemente abri un recordset con esa consulta y le asignas ese recordset al .DataSource del reporte y listo...ni necesitas dataenviroment...nunca lo he usado...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #28 (permalink)  
Antiguo 10/06/2009, 11:20
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 seba123neo Ver Mensaje
Hola, que queres hacer mostrar un reporte..??? con el DataReport?? simplemente abri un recordset con esa consulta y le asignas ese recordset al .DataSource del reporte y listo...ni necesitas dataenviroment...nunca lo he usado...

saludos.
Pero como le asinas el Datasource?

perdona mi ignorancia pero no trabajo asi
  #29 (permalink)  
Antiguo 10/06/2009, 20:21
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Sentencia SQL para lograr el Ranking de los 5 productos mas vendidos

vos esa consulta la abris en un recordset no?? por ejemplo..

Recordset.Open "Tu Consulta", TuConeccion

despues le asignas el recordset al .Datasource del DataReport...

TuReporte.DataSource = Recordset

y por ultimo mostras el datareport...

TuReporte.Show

y listo en el datareport te aparece lo que esta en la consulta...obviamente debes armar el datareport con los campos que estan en la consulta sino te va a tirar error...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #30 (permalink)  
Antiguo 11/06/2009, 08:28
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 seba123neo Ver Mensaje
vos esa consulta la abris en un recordset no?? por ejemplo..

Recordset.Open "Tu Consulta", TuConeccion

despues le asignas el recordset al .Datasource del DataReport...

TuReporte.DataSource = Recordset

y por ultimo mostras el datareport...

TuReporte.Show

y listo en el datareport te aparece lo que esta en la consulta...obviamente debes armar el datareport con los campos que estan en la consulta sino te va a tirar error...

saludos.
Si pero sabes lo que pasa Seba123neo es que yo primero tengo que ingresar 2 fechzas en 2 dtpicker (variables)



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 02:49.