Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/09/2012, 08:18
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 9 meses
Puntos: 447
Respuesta: MYSQL uso de UNION

Hola portela85:

El problema está con el ORDER BY, ya que seguramente dejaste esta ordenación en ambas consultas, sin embargo, en una UNION debe haber UNA SOLA CLÁUSULA, sin embargo, si hay una manera de unir las consultas, sería más o menos así:

Código:
  SELECT .... 
  ... 
  Aquí pones la primer consulta SIN SU ORDER BY
  UNION
  SELECT ...
  ...
  Aquí pones la segunda consulta con EL 
  ORDER BY
Observa que en la consulta SOLO DEBE EXISTIR UN ORDER BY y este se ejecuta DESPUÉS DE HACER LA UNIÓN.

Hay otra manera de hacer esto y sería presentar los resultados de la primer consulta ordenados y después los de la segunda consulta también ordenados, sería más o menos así:

Código:
 SELECT * FROM
( SELECT .... 
  ... 
  Aquí pones la primer consulta con su 
  ORDER BY
  ...
) T1
UNION
( SELECT ...
  ...
  Aquí pones la segunda consulta con su 
  ORDER BY
  ....
) T2
Ahora bien, cambiando un poco de tema, creo que podrías simplificar la consulta y obtener las dos sumatorias en una sola consulta... Tienes muchos paréntesis de más (creo que utilizaste algún tipo de asistente o algo por el estilo), pero podrías intentar hacer algo como esto:

Código MySQL:
Ver original
  1.   SUM(IF(trabajos.estadocliente = 'SI', trabajos.preciototalK25, 0)) preciototalK25,
  2.   SUM(trabajos.preciototalK25) preciototalESTIMADO,
  3.   clientes.cliente,
  4.   proyectos.proyecto,
  5.   proyectos.WBS,
  6.   interlocutores.interlocutor
  7.   interlocutores
  8.   INNER JOIN trabajos ON interlocutores.Id_inerlocutor = trabajos.interlocutor
  9.   INNER JOIN proyectos ON trabajos.proyecto = proyectos.Id_proyecto
  10.   INNER JOIN clientes ON clientes.Id_cliente = trabajos.cliente
  11.   trabajos.f_inicio >= '2012-06-01' AND
  12.   trabajos.f_inicio <='2012-6-30'
  13. GROUP BY clientes.cliente, proyectos.proyecto
  14. ORDER BY interlocutores.interlocutor

Observa que uno de los SUM's es una suma condicional, es decir, solo cuando se cumple la condición trabajos.estadocliente = 'SI' se sumariza.

Dale un vistazo para ver si te sirve el código.

Saludos
Leo.