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

Duda con UNION y DISTINCT

Estas en el tema de Duda con UNION y DISTINCT en el foro de Mysql en Foros del Web. Buenas, tengo unas cuantas tablas de las cuales quiero, haciendo un UNION, sacar 2 campos idénticos. Despues, de esos 2 campos, quiero agrupar 1 de ...
  #1 (permalink)  
Antiguo 29/03/2011, 05:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
Duda con UNION y DISTINCT

Buenas, tengo unas cuantas tablas de las cuales quiero, haciendo un UNION, sacar 2 campos idénticos. Despues, de esos 2 campos, quiero agrupar 1 de ellos, pero ahí tengo el problema, que no me deja agrupar el resultado de un UNION.

Mi estructura es más o menos esta:

Código PHP:
Tabla x
-------------------
c1       |    c2
-------------------
2011       2
2010       4
2009       6
2008       8


Tabla y
-------------------
c3       |    c4
-------------------
2008        8 
Mi idea es que el resultado del UNION sea así:

Código PHP:
Tabla final
-------------------
   
a      |    b
-------------------
2011       2
2010       4
2009       6
2008       16 
O sea, que agrupe los resultados por 'a'

Esta es la estructura de mi SELECT:

Código PHP:
SELECT FROM 
(
     
SELECT campo1 as ccampo2
     FROM x
     GROUP BY campo1

     UNION

     SELECT campo3 
as ccampo4
     FROM y
     GROUP BY campo3
) as tabla GROUP BY c 
Y el problema que tengo es que al ejecutar la sentencia, me agrupa por el campo 'c' pero lo hago mal puesto que el segundo campo no me lo muestra bien ya que no 'suma' los resultados de la segunda select

¿Alguna ayuda? Gracias ;)
  #2 (permalink)  
Antiguo 29/03/2011, 06:03
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
Respuesta: Duda con UNION y DISTINCT

UNION devuelve los resultados unidos de ambas consultas, eliminando registros repetidos. El criterio de repetición es que todos los valores del registro sean iguales. Asegúrate de tener algún diferenciador, o de lo contrario pueden suprimirse valores por coincidencias casuales.

Si quieres que salgan todos debes usar UNION ALL.
__________________
¿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 29/03/2011, 07:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda con UNION y DISTINCT

Ademas del UNION ALL debes sumar el campo...

Código MySQL:
Ver original
  1. SELECT a, sum(b) FROM
  2. (
  3.      SELECT campo1 as a, campo2 as b
  4.      FROM x
  5.  
  6.      UNION ALL
  7.  
  8.      SELECT campo3 as a, campo4 as b
  9.      FROM y
  10.  
  11. ) as tabla GROUP BY a
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 29/03/2011, 08:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con UNION y DISTINCT

Cita:
Iniciado por quimfv Ver Mensaje
Ademas del UNION ALL debes sumar el campo...

Código MySQL:
Ver original
  1. SELECT a, sum(b) FROM
  2. (
  3.      SELECT campo1 as a, campo2 as b
  4.      FROM x
  5.  
  6.      UNION ALL
  7.  
  8.      SELECT campo3 as a, campo4 as b
  9.      FROM y
  10.  
  11. ) as tabla GROUP BY a
Ciero quim, era eso, me he dado cuenta unos minutos antes de volver a mirar este post, jeje

¡Gracias a los 2!

Etiquetas: distinct, union
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 20:11.