Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/12/2007, 17:56
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
Re: Consultar 3 tablas a la vez con between

Bueno, si las tres tablas tienen LOS MISMOS CAMPOS Y EN EL MISMO ORDEN, pero no contienen los MISMOS DATOS en los otros campos que no son la fecha, lo que debes lograr es una UNION entre las tablas, de modo de obtener una tabla derivada que contenga la totalidad de los registros:
SELECT * FROM TABLA1 UNION (SELECT * FROM TABLA2 UNION TABLA3) AS TABLA4 WHERE FECHA BETWEEN FECHA1 AND FECHA2;

Hago hincapié en que no tenga los mismos datos, porque sino te quedarían registros duplicados en la tabla de respuesta.

No es conveniente una consulta como
SELECT * FROM TABLA1, TABLA2, TABLA3 WHERE FECHA BETWEEN FECHA1 AND FECHA2;
porque eso te daría un producto cartesiano y te obligaría a más selecciones.

Me explico: Una consulta entre 3 tablas con 10.000 registros, 2.000 y 45.000 registros con UNION te daría por resultado 10.000+2.000+45.000= 57.000 registros. En cambio el resultado de un JOIN (el usode la coma es un JOIN) te daría 10.000 x 2.000 x 45.000 = 900.000.000.000 de registros.
Esto sucede porque un JOIN simple es la combinación de cada registro de una tabla con cada uno de los registros de la otra tabla. Haciendo un JOIN entre tres tablas el resultado es n x n x n. Para evitar eso habría que especificar subconsultas de selección intermedia, y lo único que lograrías es complicar la consulta innecesariamente.