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 COUNT(r.idReservacion
) numeroVendido
, oa.nombreAgenciaO NombreAgencia
vac_operadores o
INNER JOIN vac_operadores_agencia oa
ON o.idOperador
= oa.idOperador
LEFT JOIN vac_reservaciones
AS r
ON o.idReservacion
= r.idReservacion
INNER JOIN vac_detalles_reservacion dr
ON r.idReservacion
= dr.idReservacion
dr.fechaSalida
BETWEEN '2010-08-01' AND '2010-08-31'