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

Problemas con mis resultados (Solucionado gracias flaviovich)

Estas en el tema de Problemas con mis resultados (Solucionado gracias flaviovich) en el foro de SQL Server en Foros del Web. Mi problema es el siguiente tengo una consulta en la cual debo obtener la ultima factura sin importar cual esta sea que esta ligada a ...
  #1 (permalink)  
Antiguo 22/04/2009, 08:34
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
De acuerdo Problemas con mis resultados (Solucionado gracias flaviovich )

Mi problema es el siguiente tengo una consulta en la cual debo obtener la ultima factura sin importar cual esta sea que esta ligada a un usuario para poder ver su consumo. Pero el problema es que lo puedo hacer pero me arroja el consumo total de todas las facturas y no de la ultima que a sido facturada para ese usuario.

Mi consulta la realizo asi y me arroja el total de todas las facturas y no solo de la ultima y yo solo necesito la ultima que a sido facturada para cada usuario:

Código sql:
Ver original
  1. SELECT     MAX(Tra.FACTURA) AS fac, Usu.USUARIO, Tra.MOVIL, Usu.EMPRESA, SUM(Tra.VALOR + Tra.SOBRECARGO) AS CONSUMO
  2. FROM         TRAFICO Tra INNER JOIN
  3.                       ID_USUARIO Usu ON Usu.MOVIL = Tra.MOVIL
  4. GROUP BY Usu.USUARIO, Usu.EMPRESA, Tra.MOVIL
  5. ORDER BY Usu.EMPRESA, Usu.USUARIO

La consulta mas especifica para que me arroja el resultado de la ultima factura y el total del consumo de esa factura es asi :

Código sql:
Ver original
  1. SELECT     MAX(Tra.FACTURA) AS fac, Usu.USUARIO, Tra.MOVIL, Usu.EMPRESA, SUM(Tra.VALOR + Tra.SOBRECARGO) AS CONSUMO
  2. FROM         TRAFICO Tra INNER JOIN
  3.                       ID_USUARIO Usu ON Usu.MOVIL = Tra.MOVIL
  4. WHERE     (Tra.FACTURA = 16209216)
  5. GROUP BY Usu.USUARIO, Usu.EMPRESA, Tra.MOVIL
  6. ORDER BY Usu.EMPRESA, Usu.USUARIO
Pero el problema de esta consulta es que no todos los usuarios estan vinculados aun a la compañia pero de todas formas necesito que aparescan y lo otro es que no lo puedo hacer manual ya que es para usarlo en una pagina web. Entonces la consulta debe encontrar sola la ultima factura de cada usuario y mostrarla como ocurre en la consulta anterior pero solo mostrando el consumo de la ultima factura y no de todas ellas.

Alguien sabe como poder solucionarlo

Gracias

Última edición por TonyChile; 23/04/2009 a las 13:53
  #2 (permalink)  
Antiguo 22/04/2009, 11:35
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Problemas con mis resultados

Como identificas la ultima factura por cada usuario? por la fecha de factura?
puedes mostrarnos algunos registros?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 22/04/2009, 12:09
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problemas con mis resultados

No lo hago por el numero de factura

factura 14867916
movil 77646861
item SERVICIOS EXCEDIDOS
concepto Minutos On Horario Normal
correlativo 8
sentido E
discado 82341705
destino movil
fecha 02-01-2008 18:12:19
horario n
servicio tel o bam o rpv, entre otras
duracion 60
unidad seg
valor 55
sobrecargo 10
tipo_llamada l

Bueno eso es de la tabla trafico esta entera pero es para q tengas una idea de lo que tiene la tabla pero para la consulta solo ocupo los q pongo en la consulta + el de la tabla ID_USUARIO en la que solo saco el usuario con formato APELLIDO, NOMBRE y ala empresa a la q pertenece el usuario

Y las tablas coinciden en q ambas poseen el campo movil q es el mismo en ambos casos

Última edición por TonyChile; 22/04/2009 a las 12:34
  #4 (permalink)  
Antiguo 22/04/2009, 14:18
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Problemas con mis resultados

No has respondido a ninguna de mis preguntas.
Asi sera dificil ayudarte.
Te pedi algunos registros y tu pusiste solo 1.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 22/04/2009, 14:35
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problemas con mis resultados

La factura la identifico por el numero de factura que nos envian 14867916 ya que la fecha de esta es relativa no siempre comienza los mismos dias de cada mes o termina en un determinado dia.

En cuanto a los datos disculpa ahora si los publico estos son los que estan relacionados con la consulta
FAC ............... USUARIO .............. MOVIL... EMPRESA.,..... CONSUMO
15280636 APELLIDO,NOMBRE1 77646902 eBD 84317
15624828 APELLIDO,NOMBRE2 77646861 eBD 282713
15624828 APELLIDO,NOMBRE3 77646937 eBD 53474
15859461 APELLIDO,NOMBRE3 77646858 eBD 131711
16093112 APELLIDO,NOMBRE4 77646918 eBD 118158
16093112 APELLIDO,NOMBRE5 77646814 Evolium 110058
16209216 APELLIDO,NOMBRE6 77646938 Adepta 190202
16209216 APELLIDO,NOMBRE7 77646817 Adepta 203843
16209216 APELLIDO,NOMBRE8 77646869 Adepta 780484


como ves el consumo de ellos q aparece es el total de todos las facturas y no de la factura a la q se muestra en el comienzo

Nombres de los campos son en este orden
factura movil item concepto correlativo sentido discado destino fecha horario servicio duracion unidad valor sobrecargo tipo_llamada

14749751 77646861 SERVICIOS EXCEDIDOS Minutos On Horario Normal 8 E 82341705 Movil Epcs 02-01-2008 18:12:19 N TEL 63 Seg 55 0 L
14749751 77646835 SERVICIOS EXCEDIDOS Minutos On Horario Normal 11 E 96968115 Movil Epcs 03-01-2008 20:06:56 N TEL 253 Seg 223 0 L
14749751 77646885 SERVICIOS EXCEDIDOS Minutos Off Horario Bajo 71 E 95483958 Otros Moviles 04-01-2008 21:46:16 B TEL 236 Seg 208 0 L
14749751 77646877 SERVICIOS CONTRATADOS BlackBerry Profesional 23 E Trafico BlackBerry 07-01-2008 0:55:10 B BAM 11 Kb 0 0 L
14749751 77646925 SERVICIOS EXCEDIDOS Minutos Off Horario Normal 25 E 89228737 Otros Moviles 08-01-2008 9:33:40 N TEL 504 Seg 444 0 L
14749751 77646845 SERVICIOS EXCEDIDOS Minutos Off Horario Normal 102 E 98408338 Otros Moviles 09-01-2008 8:41:53 N TEL 105 Seg 92 0 L

Si hace falta algo + me dices

y por sino se entiende aun mi pregunta es como con el sentencia q coloco a continuacion obtengo el consumo total x usuario de la factura a la que hago referencia y no el consumo total de todas las facturas
Código php:
Ver original
  1. SELECT     MAX(Tra.FACTURA) AS fac, Usu.USUARIO, Tra.MOVIL, Usu.EMPRESA, SUM(Tra.VALOR + Tra.SOBRECARGO) AS consumo
  2. FROM         TRAFICO Tra INNER JOIN
  3.                       ID_USUARIO Usu ON Usu.MOVIL = Tra.MOVIL
  4. GROUP BY Usu.USUARIO, Usu.EMPRESA, Tra.MOVIL
  5. ORDER BY fac, Usu.EMPRESA, Usu.USUARIO

Última edición por TonyChile; 22/04/2009 a las 15:28
  #6 (permalink)  
Antiguo 22/04/2009, 15:30
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Problemas con mis resultados

OK, creo que ya entendi el problema. A ver si entiendes esto:
Código sql:
Ver original
  1. SELECT S.fac, S.USUARIO, S.MOVIL, S.EMPRESA, Tra.VALOR + Tra.SOBRECARGO [CONSUMO]
  2. FROM TRAFICO Tra
  3. INNER JOIN (
  4.     SELECT MAX(Tra.FACTURA) AS fac, U.USUARIO, Tra.MOVIL, U.EMPRESA
  5.     FROM TRAFICO T
  6.     INNER JOIN ID_USUARIO U ON U.MOVIL = Tra.MOVIL
  7.     GROUP BY U.USUARIO, U.EMPRESA, Tra.MOVIL
  8. ) S ON Tra.FACTURA=S.fac AND Tra.USUARIO=S.USUARIO AND Tra.MOVIL=S.MOVIL AND Tra.EMPRESA=S.EMPRESA
  9. ORDER BY S.EMPRESA, S.USUARIO
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 22/04/2009, 15:53
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problemas con mis resultados

Gracias sabes estaba viendo algo similar ya que no sabia que se podia hacer eso del select dentro de otro lo estaba viendo recien pero dentro de un where.
Ahora puse esto que me diste y si lo entiendo pero me sale un error

the column prefix 'Tra' does not match with a table name or alias name used in the query

onda

el prefijo de columna 'Tra' no coincide con un nombre de tabla o nombre de alias utilizado en la consulta

pero no entiendo porq si lo esta

FROM TRAFICO Tra
  #8 (permalink)  
Antiguo 22/04/2009, 16:00
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Problemas con mis resultados

Ahora si:
Código sql:
Ver original
  1. SELECT S.fac, S.USUARIO, S.MOVIL, S.EMPRESA, Tra.VALOR + Tra.SOBRECARGO [CONSUMO]
  2. FROM TRAFICO Tra
  3. INNER JOIN (
  4.     SELECT MAX(T.FACTURA) AS fac, U.USUARIO, T.MOVIL, U.EMPRESA
  5.     FROM TRAFICO T
  6.     INNER JOIN ID_USUARIO U ON U.MOVIL = T.MOVIL
  7.     GROUP BY U.USUARIO, U.EMPRESA, T.MOVIL
  8. ) S ON Tra.FACTURA=S.fac AND Tra.USUARIO=S.USUARIO AND Tra.MOVIL=S.MOVIL AND Tra.EMPRESA=S.EMPRESA
  9. ORDER BY S.EMPRESA, S.USUARIO
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 22/04/2009, 16:04
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problemas con mis resultados

Mmmmmmmmmm
columna invalida USUARIO
  #10 (permalink)  
Antiguo 23/04/2009, 07:42
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problemas con mis resultados

Me arroja error en tra.usuario y en tra.empresa

GROUP BY U.USUARIO, U.EMPRESA, T.MOVIL) S ON Tra.FACTURA=S.fac AND Tra.USUARIO=S.USUARIO AND Tra.MOVIL=S.MOVIL AND Tra.EMPRESA=S.EMPRESA

Y es puesto que tanto tra.usuario y tra.empresa no se encuentran en la tabla de trafico sino solo en LA id_usuario.
trate U.USUARIO = S.USUARIO AND U.EMPRESA = S.EMPRESA pero nada me arroja otro error

el prefijo de columna 'u' no coincide con un nombre de tabla o nombre de alias utilizado en esta consulta
pero si lo esta ID_USUARIO U

despues trate sacando esos campos tra.usuario y tra.empresa:
Código sql:
Ver original
  1. SELECT     S.fac, S.USUARIO, S.MOVIL, S.EMPRESA, Tra.VALOR + Tra.SOBRECARGO AS consumo
  2. FROM         TRAFICO Tra INNER JOIN
  3.                           (SELECT     MAX(T .FACTURA) AS fac, U.USUARIO, T .MOVIL, U.EMPRESA
  4.                             FROM          TRAFICO T INNER JOIN
  5.                                                    ID_USUARIO U ON U.MOVIL = T .MOVIL
  6.                             GROUP BY U.USUARIO, U.EMPRESA, T .MOVIL) S ON Tra.FACTURA = S.fac AND Tra.MOVIL = S.MOVIL
  7. ORDER BY S.EMPRESA, S.USUARIO

Pero el problema de eso es que me arroja los resultados por cada llamada y necesito el total del consumo por usuario por cada factura
Me arroja un resultado asi:


16209216 Usuario1 77646xxx empre1 150
16209216 Usuario1 77646xxx empre1 165
16209216 Usuario1 77646xxx empre1 30
16209216 Usuario1 77646xxx empre1 107
16209216 Usuario1 77646xxx empre1 150
16209216 Usuario1 77646xxx empre1 15
16209216 Usuario1 77646xxx empre1 0
16209216 Usuario1 77646xxx empre1 48
16209216 Usuario1 77646xxx empre1 268

pero lo necesito asi con cada usuario
16209216 Usuario1 77646xxx empre1 933

Mmmmmmmmmmmm

Me podrias seguir ayudando flaviovich y disculpa que moleste tanto

Última edición por TonyChile; 23/04/2009 a las 08:26
  #11 (permalink)  
Antiguo 23/04/2009, 08:04
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Problemas con mis resultados

Código sql:
Ver original
  1. SELECT S.fac, U.USUARIO, Tra.MOVIL, U.EMPRESA, Tra.VALOR + Tra.SOBRECARGO [CONSUMO]
  2. FROM TRAFICO Tra
  3. INNER JOIN ID_USUARIO U ON U.MOVIL = Tra.MOVIL
  4. INNER JOIN (
  5.     SELECT MAX(FACTURA) AS fac, MOVIL
  6.     FROM TRAFICO
  7.     GROUP BY MOVIL
  8. ) S ON Tra.FACTURA=S.fac AND Tra.MOVIL=S.MOVIL
  9. GROUP BY S.fac, U.USUARIO, U.EMPRESA, Tra.MOVIL
  10. ORDER BY U.EMPRESA, U.USUARIO
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #12 (permalink)  
Antiguo 23/04/2009, 08:25
Avatar de TonyChile  
Fecha de Ingreso: marzo-2009
Ubicación: Maipú, Santiago
Mensajes: 422
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Problemas con mis resultados

Te pasaste flaviovich el ultimo que me mandaste le hice una pequeña modificacion y me funciona tal como queria realmente muchas gracias

Código sql:
Ver original
  1. SELECT     S.fac, U.USUARIO, Tra.MOVIL, U.EMPRESA, SUM(Tra.VALOR + Tra.SOBRECARGO) AS consumo
  2. FROM         TRAFICO Tra INNER JOIN
  3.                       ID_USUARIO U ON U.MOVIL = Tra.MOVIL INNER JOIN
  4.                           (SELECT     MAX(FACTURA) AS fac, MOVIL
  5.                             FROM          TRAFICO
  6.                             GROUP BY MOVIL) S ON Tra.FACTURA = S.fac AND Tra.MOVIL = S.MOVIL
  7. GROUP BY S.fac, U.USUARIO, U.EMPRESA, Tra.MOVIL
  8. ORDER BY S.fac, U.EMPRESA, U.USUARIO


Y el resultado sale asi (perfecto):

15280636 Usuario1 77646xxx empre1 3509
15624828 Usuario2 77646xxx empre1 19208
15624828 Usuario3 77646xxx empre1 2660
15859461 Usuario4 77646xxx empre1 8584
16093112 Usuario5 77646xxx empre1 2159
16093112 Usuario6 77646xxx empre2 108
16209216 Usuario7 77646xxx empre3 3655
16209216 Usuario8 77646xxx empre3 15125
16209216 Usuario9 77646xxx empre3 43099
16209216 Usuario0 77646xxx empre4 15007


Muchas gracias de nuevo flaviovich necesito otras cosas pero sera en otro post gracias por todo tu gran aporte
__________________
Chilenos 100% Chilenos de Corazón
"Nuestra mayor gloria no está en no caer jamás, sino en levantarnos cada vez que caigamos"

Última edición por TonyChile; 24/04/2009 a las 13:03
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 14:56.