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

Problema SQL con Union All

Estas en el tema de Problema SQL con Union All en el foro de SQL Server en Foros del Web. Hola a todos: tengo una duda. Tengo estas dos tablas: equipos registro (int) nombre (varchar) partidos registro (int) id_equipo1 (int) resultado_equipo1 (int) id_equipo2 (int) resultado_equipo2 ...
  #1 (permalink)  
Antiguo 20/09/2012, 09:50
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Problema SQL con Union All

Hola a todos:

tengo una duda. Tengo estas dos tablas:

equipos
registro (int)
nombre (varchar)

partidos
registro (int)
id_equipo1 (int)
resultado_equipo1 (int)
id_equipo2 (int)
resultado_equipo2 (int)

Quiero sacar un listado de todos los puntos conseguidos por cada equipo (tanto si han jugado como equipo 1 como con equipo 2), por lo que hago:

select nombre,sum(resultado_equipo1) as suma1 from equipos,partidos where equipos.registro=partidos.id_equipo1 group by nombre
union all
select nombre,sum(resultado_equipo1) as suma1 from equipos,partidos where equipos.registro=partidos.id_equipo1 group by nombre

Pero me muestra un listado como este:

NOMBRE SUMA1
ciudad1 24
ciudad2 35
ciudad3 46
ciudad1 57
ciudad2 43
ciudad3 65

Es decir, me tendría que sacar solo tres filas y agrupar los resultados, lo correcto sería:

NOMBRE SUMA1
ciudad1 81
ciudad2 78
ciudad3 111

Pensaba que al hacer el Union se sumarían entre sí las variables iguales, pero no.

¿Cuál es la forma correcta de hacerlo?

Gracias
  #2 (permalink)  
Antiguo 20/09/2012, 09:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema SQL con Union All


select nombre, sum(suma1) from(
select nombre,sum(resultado_equipo1) as suma1 from equipos,partidos where equipos.registro=partidos.id_equipo1 group by nombre
union all
select nombre,sum(resultado_equipo1) as suma1 from equipos,partidos where equipos.registro=partidos.id_equipo1 group by nombre
) t1 group by nombre


saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/09/2012, 03:44
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Respuesta: Problema SQL con Union All

Muchas gracias. Me ha sido muy útil.

Etiquetas: sql
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 13:37.