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

Ayuda con GROUP BY

Estas en el tema de Ayuda con GROUP BY en el foro de Mysql en Foros del Web. Saludos: tengo una consulta, la cual necesita ser agrupada, pero cuando hago el GROUP BY me da un error, la consulta es la siguiente: Código ...
  #1 (permalink)  
Antiguo 11/03/2008, 10:43
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Ayuda con GROUP BY

Saludos:

tengo una consulta, la cual necesita ser agrupada, pero cuando hago el GROUP BY me da un error, la consulta es la siguiente:
Código PHP:
SELECT A.env_fecha AS Fecha,
C.tie_name AS Origen,
D.tie_name AS Destino,
SUBSTR(B.envd_barra,9,3) AS Barra,
E.prd_name AS Producto,
SUM(B.envd_cantidad) AS QDE,
SUM(SUM(B.envd_cantidad) * AVG(B.envd_precio)) As Importe
FROM transfenvios A
transfenviodetalle Btiendas Ctiendas Dproductos E
WHERE env_origen 
1
AND env_fecha >= '2008-03-04'
AND env_fecha <= '2008-03-10'
AND A.env_origen C.tie_code
AND A.env_destino D.tie_code
AND A.env_code B.envd_code
AND B.envd_barra E.prd_code
GROUP BY A
.env_destinoB.envd_barra
Y el error que sale es el error 1111 que dice: "Invalid use a group function"

Por favor alguien ayúdeme.
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 11/03/2008, 11:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: Ayuda con GROUP BY

No puedes poner una función agregada dentro de otra función agregada en el mismo SELECT.
Código:
SUM(SUM(B.envd_cantidad) * AVG(B.envd_precio)) As Importe
Ésto no se hace.

Para lograr esto, ambos valores (SUM() y AVG()) deben ser obtenidos en una subconsulta.
  #3 (permalink)  
Antiguo 11/03/2008, 15:08
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Re: Ayuda con GROUP BY

uhmmmmm, ok, alguna ayuda de como hacer subconsultas.
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 11/03/2008, 15:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: Ayuda con GROUP BY

Algo así:
Código:
SELECT 
    Fecha, Origen, Destino, 
    Barra, Producto, QDE, 
    SUM(SumCantidad * SumPrecio) AS Importe 
FROM 
   (SELECT A.env_fecha AS Fecha,
      C.tie_name AS Origen,
      D.tie_name AS Destino,
      SUBSTR(B.envd_barra,9,3) AS Barra,
      E.prd_name AS Producto,
      SUM(B.envd_cantidad) AS QDE,
      SUM(B.envd_cantidad) SumCantidad,  
      AVG(B.envd_precio) SumPrecio
    FROM transfenvios A, transfenviodetalle B, 
      tiendas C, tiendas D, productos E
    WHERE env_origen = 1
      AND (env_fecha BETWEEN  '2008-03-04' '2008-03-10')
      AND A.env_origen = C.tie_code
      AND A.env_destino = D.tie_code
      AND A.env_code = B.envd_code
      AND B.envd_barra = E.prd_code
   GROUP BY Destino, Barra) AS T1
GROUP BY Destino, Barra;
El tema es que los componentes se vayan resolviendo por etapas.
El doble agrupamiento es necesario, porque hay funciones agregadas en los dos niveles.
Además, el >= AND <= se resuelve por el BETWEEN, que es la operación que en realidad realiza.
  #5 (permalink)  
Antiguo 13/03/2008, 07:46
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Re: Ayuda con GROUP BY

Muchas gracias, ahora funciona a la perfección y me estoy metiendo mas al tema de las subconsultas.

Saludos.
__________________
El aprendiz.
  #6 (permalink)  
Antiguo 13/03/2008, 10:02
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Re: Ayuda con GROUP BY

Ahora pasa algo, pense que ya habia salido y que todo estaba bien, en realidad me devuelve resultados y eso ya es un avance pero no me agrupa por el campo barra, que podria ser?
__________________
El aprendiz.
  #7 (permalink)  
Antiguo 13/03/2008, 10:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: Ayuda con GROUP BY

Quitá del GROUP BY el campo y fijate cuál es el resultado que quieres obtener.
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 05:13.