Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/08/2010, 09:39
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: Ayuda con subselect

Si, el problema está dado tanto por el orden de las tablas invocadas como por el hecho de usar INNER JOIN.
Por un lado, INNER JOIN exige que haya sí o sí coincidencias entre toas las tablas. No te mostrará los resultados de otra forma. Para tu caso debes usar LEFT o RIGHT JOIN. Pero en estos casos la posición de las tablas afecta el resutlado y deben ordenarse desde la que tiene todos los registros a las que sólo tiene una parte.
Esto significa que si no todas las agencias tienen tickets, entonces vac_reservaciones y vac_detalles_reservacion no deben ser las primeras tablas.
Si no hay agencias sin operadores ni operadores sin agencias, se puede usar INNER JOIN en ese caso; si no hay reservas sin detalle, elINNER JOIN también va entre estas dos tablas, pero no entre los pares.
Algo así:
Código MySQL:
Ver original
  1.   COUNT(r.idReservacion) numeroVendido,
  2.   oa.nombreAgenciaO NombreAgencia
  3.   vac_operadores o
  4.   INNER JOIN vac_operadores_agencia oa ON o.idOperador = oa.idOperador
  5.   LEFT JOIN vac_reservaciones AS r ON o.idReservacion = r.idReservacion
  6.   INNER JOIN vac_detalles_reservacion dr ON r.idReservacion = dr.idReservacion
  7.  
  8.   dr.fechaIngreso BETWEEN '2010-08-01' AND '2010-08-31' AND
  9.   dr.fechaSalida BETWEEN '2010-08-01' AND '2010-08-31'
  10. GROUP BY oa.idOperador;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)