Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consultar 3 tablas a la vez con between

Estas en el tema de Consultar 3 tablas a la vez con between en el foro de Mysql en Foros del Web. hola!!! necesito consultar 3 tablas que tienen los mismos campos, pero la data está compartida, es decir, en una tengo información de diciembre del 2006 ...
  #1 (permalink)  
Antiguo 10/12/2007, 13:08
 
Fecha de Ingreso: junio-2006
Mensajes: 330
Antigüedad: 17 años, 10 meses
Puntos: 4
Consultar 3 tablas a la vez con between

hola!!! necesito consultar 3 tablas que tienen los mismos campos, pero la data está compartida, es decir, en una tengo información de diciembre del 2006 hasta marzo de 2007, la segunda desde abril 2007 hasta agosto del 2007 y septiembre del 2007 hasta diciembre del 2007, entonces como haria para buscar entre fechas si por ejemplo pido desde enero 2007 hasta junio del 2007. La consulta con unat tabla sería algo asi para mi:

SELECT * FROM tabla1 WHERE fecha BETWEEN 'fecha1' AND 'fecha2'

Pero como haria con las tres, utilizando el BetWEEN...

Gracias!!!
  #2 (permalink)  
Antiguo 10/12/2007, 14:27
Avatar de ss007  
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 1 mes
Puntos: 0
Re: Consultar 3 tablas a la vez con between

Espero poder ayudarte, hace poco empece con Mysql, pero creo que la forma correcta seria:

SELECT * FROM tabla1, tabla2, tabla3 WHERE fecha BETWEEN 'fecha1' AND 'fecha2'
__________________
MonaS
  #3 (permalink)  
Antiguo 10/12/2007, 17:56
Avatar de 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, 4 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.
  #4 (permalink)  
Antiguo 14/12/2007, 07:37
 
Fecha de Ingreso: junio-2006
Mensajes: 330
Antigüedad: 17 años, 10 meses
Puntos: 4
Re: Consultar 3 tablas a la vez con between

Mil Gracias a ambos por responder...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:51.