Ver Mensaje Individual
  #9 (permalink)  
Antiguo 23/04/2014, 08:32
Avatar de gnzsoloyo
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: ¿Como funciona realmente UNION?

Cita:
Vale, coge y agrega todos los registros, pero al final de la UNION agrupo por cod_cliente servicio y subservicio, al agruparlo se queda solo con un registro que contenga estos tres parametros iguales, operando sobre el resto: pudiendo sacar la suma, contar los registros etc etc.
No exactamente... No estás agrupando al final del UNION, sino después UNION. El GROUP BY aplica sobre la tabla derivada, y no sobre cada una de las del UNION.

Cita:
Pero porque mantiene el de la primera consulta? el de subconsulta 1 y si los cambio de orden mantiene el de subconsulta2? Como puedo controlar con que registro de las subconsultas ( los que tienen los tres parametros iguales como comenté) se queda??
Manual de referencia, manual de referencia, manual de referencia...

UNION devolverá todos los distintos, todos los que encuentre. ¿Por qué va descartar lo que no le dices que descarte?
Es irrelevante que pongas uno u otro orden, porque le estás diciendo que devuelva TODO lo que sea diferente tomando un registro entero como unidad de comparación.
Entendamos esto:
Cita:
1-----------------cliente1-------------test1
2-----------------cliente2-------------test2
3-----------------cliente3-------------test3

clumna1---------columna2------columna3

1-------------------cliente1-----------test33
2-------------------cliente3-----------test32
para el UNION son cinco registros distintos.
Cita:
cod_cliente-----servicio-----subservicio-----importe
1---------------------S12-----------SUB23---------25
1---------------------S12-----------SUB45---------45
1---------------------S34-----------SUB78---------78
2---------------------S12-----------SUB24---------48
2---------------------S33-----------SUB43---------78

cod_cliente-----servicio-----subservicio-----importe
1---------------------S12-----------SUB23---------7
2---------------------S33-----------SUB43---------8
Son siete registros distintos.

UNION no se pone a descartar registros porque se semeje una parte de los valores. Sólo si todos los valores en cada campo del mismo registro se diferencian, y en ninguno de los ejemplos que mencionas se cumple.

Tengo la impresión de que tu problema requiere para su solución una consulta completamente diferente.

Cita:
Y una ultima cosilla, al unir dos subconsultas, puedo elegir que columna de cada registro mostrar??
No exactamente, como dije. Mosrará todo. Si quieres wxcluir algo, debes ponerle las condiciones para que lo excluya.
Cita:
Hay alguna forma de al hacer el group by indicar que ''grupo'' dejar en la agrupacion?
No es tarea del GROUP BY hacer exclusiones de registros. Para eso están otras cláusulas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 23/04/2014 a las 08:40