Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/08/2010, 12:12
Avatar de darkangel_java
darkangel_java
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda con subselect

Cita:
Iniciado por gnzsoloyo Ver Mensaje
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;


Al aplicar esta sentencia me da el mismo resultado:

Código:
SELECT COUNT( r.idReservacion ) numeroVendido, oa.nombreAgenciaO NombreAgencia
FROM vac_operadores_agencia oa, vac_operadores AS o, vac_reservaciones AS r, vac_detalles_reservacion dr
WHERE dr.fechaIngreso
BETWEEN '2010-08-01'
AND '2010-08-31'
AND dr.fechaSalida
BETWEEN '2010-08-01'
AND '2010-08-31'
AND r.idReservacion = dr.idReservacion
AND r.idReservacion = o.idReservacion
AND o.idOperador = oa.idOperador
GROUP BY oa.nombreAgenciaO
ORDER BY numeroVendido DESC
Esto es sin el uso de JOINS,

que podria agregarle o modificarle para que me de el resultado que quiero?