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 SUM(IF(trabajos.estadocliente
= 'SI', trabajos.preciototalK25
, 0)) preciototalK25
, SUM(trabajos.preciototalK25
) preciototalESTIMADO
, clientes.cliente,
proyectos.proyecto,
proyectos.WBS,
interlocutores.interlocutor
interlocutores
INNER JOIN trabajos
ON interlocutores.Id_inerlocutor
= trabajos.interlocutor
INNER JOIN proyectos
ON trabajos.proyecto
= proyectos.Id_proyecto
INNER JOIN clientes
ON clientes.Id_cliente
= trabajos.cliente
trabajos.f_inicio
>= '2012-06-01' AND trabajos.f_inicio <='2012-6-30'
GROUP BY clientes.cliente
, proyectos.proyecto
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.