Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/09/2011, 02:25
Pelirr
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: problema count tablas diferentes misma query

Hola quimfv, pero eso ya lo había probado, el problema es que entonces lo que obtengo es algo parecido a ésto en el informe:

company ............. numArrivals..................numDep
IB .......................... 23 ............................0
SPP .......................... 1 .............................0
IB ............................. 0 ............................12
SPP .......................... 0 ............................ 1

y yo lo que necesito conseguir es lo siguiente:

company ............. numArrivals..................numDep
IB .......................... 23 ............................12
SPP .......................... 1 .............................1

He ahí el problema.

Reconozco que mi conocimiento de msql es limitado, de modo que no he conseguido hacerlo de ninguna manera. Pero os voy a dejar cómo he conseguido al final mostrar lo que necesito:

En la consulta del jasperReport, he hecho lo siguiente:

Cita:
select distinct e.iataCompanyCode as company from `aodb`.`arrivalFlight` e where e.iataCompanyCode in ($P!{listadoAerolineas}) union (select distinct f.iataCompanyCode as company from `aodb`.`departureflight` f where f.iataCompanyCode in ($P!{listadoAerolineas}));
que parece redundante, porque el parametro listadoAerolineas contiene los mismos valores que obtengo con la query, es decir, IB y SPP en el caso anterior. Pero de éste modo, en el reporte, obtengo como variable company esos valores, que utilizo en un subreporte que ya me trae los datos que necesito, y cuya query es la siguiente:

Cita:
select (select count(*) from `aodb`.`arrivalflight` a where a.iataCompanyCode = $P{company} and a.scheduledTime >= $P{fechaInformeDesde} and a.scheduledTime < $P{fechaInformeHasta}) as numArr, (select count(*) from `aodb`.`departureflight` b where b.iataCompanyCode = $P{company} and b.scheduledTime >= $P{fechaInformeDesde} and b.scheduledTime < $P{fechaInformeHasta}) as numDep, ((select count(*) from `aodb`.`arrivalflight` a where a.iataCompanyCode = $P{company} and a.scheduledTime >= $P{fechaInformeDesde} and a.scheduledTime < $P{fechaInformeHasta}) + (select count(*) from `aodb`.`departureflight` b where b.iataCompanyCode = $P{company} and b.scheduledTime >= $P{fechaInformeDesde} and b.scheduledTime < $P{fechaInformeHasta})) as totalMov;
De este modo, puedo mostrar :

compañia.....................numArr............... .....numDep .......................totalMov

para cada compañía. No he conseguido hacerlo todo en una sola query, porque no podía hallar el total (el count(*)) para cada compañia por separado, todo en la misma query.

Por cierto que los distintc los utilizo porque si no me trae valores repetidos y eso no me vale.

Muchas gracias por la respuesta, espero que a alguien le sirva la mía.

Un saludo