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

[SOLUCIONADO] Problemas con SUM y ROLLUP

Estas en el tema de Problemas con SUM y ROLLUP en el foro de Mysql en Foros del Web. Buenas tardes Maestros, Estaba haciendo una consulta y utilizando comandos que no había utilizado mucho y me he encontrado con un problema. Tengo una tabla ...
  #1 (permalink)  
Antiguo 06/10/2013, 09:00
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 13 años, 6 meses
Puntos: 4
Pregunta Problemas con SUM y ROLLUP

Buenas tardes Maestros,

Estaba haciendo una consulta y utilizando comandos que no había utilizado mucho y me he encontrado con un problema.

Tengo una tabla formada por 3 columnas: nombre, apellidos y coste y quiero que me muestre toda la lista de trabajadores y finalmente el coste total. Hasta aquí no hay problema, lo he resuelto con un sum y un rollup, pero en la columna apellido me muestra "NULL". Es más que nada un tema estético, hay alguna forma de que solo me devuelva el valor total sin nada más? Sino es así, que solución se os ocurre?

Por si acaso os adjunto el código:
Código MySQL:
Ver original
  1. SELECT DISTINCT prov_nom, prov_cognoms, SUM( prov_costanual ) AS total_cost1
  2. FROM proveidors pr, imputacions imp
  3. WHERE prov_treballador =  'Trabajador'
  4. AND pr.prov_id = imp.proveidors_prov_id
  5. GROUP BY prov_nom


Gracias.
  #2 (permalink)  
Antiguo 06/10/2013, 09:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas con SUM y ROLLUP

Cita:
pero en la columna apellido me muestra "NULL". Es más que nada un tema estético,
¿Evitarlo desde la consulta simple?
No. Si te fija en el manual, por definición de la clausula, eso es lo que siempre devuelve en esos casos.
Ahora bien, eso no implica que no puedas manipular la situación: Para eso existe el IFNULL():
Código MySQL:
Ver original
  1.     prov_nom,
  2.     IFNULL(prov_cognoms, '') prov_cognoms,
  3.     SUM( prov_costanual ) total_cost1
  4. FROM proveidors pr INNER JOIN imputacions imp ON pr.prov_id = imp.proveidors_prov_id
  5. WHERE prov_treballador =  'Trabajador'

Algunos tips:
1) No es necesario usar AS. Es una clausula obsoleta, ya no incluida en el estándar ANSI SQL, y sólo sirve para ensuciar el código.
2) No uses JOINs implícitos (coma), usa JOINs explícitos (INNER JOIN, LEFT JOIN o RIGHT JOIN). Ayudan a la performance, porque el implicito no es optimizable por el parser, y el explicito si.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/10/2013, 09:20
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con SUM y ROLLUP

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Evitarlo desde la consulta simple?
No. Si te fija en el manual, por definición de la clausula, eso es lo que siempre devuelve en esos casos.
Ahora bien, eso no implica que no puedas manipular la situación: Para eso existe el IFNULL():
Código MySQL:
Ver original
  1.     prov_nom,
  2.     IFNULL(prov_cognoms, '') prov_cognoms,
  3.     SUM( prov_costanual ) total_cost1
  4. FROM proveidors pr INNER JOIN imputacions imp ON pr.prov_id = imp.proveidors_prov_id
  5. WHERE prov_treballador =  'Trabajador'

Algunos tips:
1) No es necesario usar AS. Es una clausula obsoleta, ya no incluida en el estándar ANSI SQL, y sólo sirve para ensuciar el código.
2) No uses JOINs implícitos (coma), usa JOINs explícitos (INNER JOIN, LEFT JOIN o RIGHT JOIN). Ayudan a la performance, porque el implicito no es optimizable por el parser, y el explicito si.
Perfecto!

Es lo que buscaba, necesitaba ese comando jejeje.


Muchas gracias gnzsoloyo!
  #4 (permalink)  
Antiguo 06/10/2013, 09:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas con SUM y ROLLUP



__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: rollup, select, sum, tabla
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 10:58.