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

Misma consulta en varias tablas similares de forma simultanea

Estas en el tema de Misma consulta en varias tablas similares de forma simultanea en el foro de Mysql en Foros del Web. Amigo, necesito que me ayuden. Tengo varias tablas que tienen los mismos campos y nombre similar, en las que quiero hacer una sola consulta que ...
  #1 (permalink)  
Antiguo 12/11/2008, 08:39
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años, 1 mes
Puntos: 2
Misma consulta en varias tablas similares de forma simultanea

Amigo, necesito que me ayuden. Tengo varias tablas que tienen los mismos campos y nombre similar, en las que quiero hacer una sola consulta que extraiga resultados de búsqueda de todas ellas al mismo tiempo.

Por ejemplo, las tablas son:

egresados2005
egresados2006
egresados2007
egresados2008

Y con una sola consulta, quiero obtener los campos `user_id`, `run` y `nombre` de los registros que cumplan la condición WHERE `codigo` > 7 en todas esas tablas.

¿Se puede hacer algo así o debo hacer una consulta para cada tabla?
  #2 (permalink)  
Antiguo 12/11/2008, 08:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Misma consulta en varias tablas similares de forma simultanea

Cita:
Iniciado por qvixote Ver Mensaje
Amigo, necesito que me ayuden. Tengo varias tablas que tienen los mismos campos y nombre similar, en las que quiero hacer una sola consulta que extraiga resultados de búsqueda de todas ellas al mismo tiempo.

Por ejemplo, las tablas son:

egresados2005
egresados2006
egresados2007
egresados2008

Y con una sola consulta, quiero obtener los campos `user_id`, `run` y `nombre` de los registros que cumplan la condición WHERE `codigo` > 7 en todas esas tablas.

¿Se puede hacer algo así o debo hacer una consulta para cada tabla?
hazlo con UNION ALL

Código sql:
Ver original
  1. (SELECT user_id, run, nombre, 'egresados2005' tabladesde FROM egresados2005 WHERE codigo > 7)
  2. UNION ALL
  3. (SELECT user_id, run, nombre, 'egresados2006' FROM egresados2006 WHERE codigo > 7)
  4. UNION ALL
  5. (SELECT user_id, run, nombre, 'egresados2007' FROM egresados2007 WHERE codigo > 7)
  6. UNION ALL
  7. (SELECT user_id, run, nombre, 'egresados2008' FROM egresados2008 WHERE codigo > 7)
  8. ORDER BY nombre

He añadido como valor constante el nombre de la tabla, por si necesitas en la programación trabajar con él.
  #3 (permalink)  
Antiguo 12/11/2008, 08:55
 
Fecha de Ingreso: marzo-2008
Ubicación: Asuncion
Mensajes: 16
Antigüedad: 16 años
Puntos: 0
Respuesta: Misma consulta en varias tablas similares de forma simultanea

Se puede tambien traer todo en una consulta, pero, es un poco largo pero facil de entender:

Código mysql:
Ver original
  1. SELECT egresados2005.user_id, egresados2005.run, egresados2005.nombre,
  2. egresados2006.user_id, egresados2006.run, egresados2006.nombre,
  3. egresados2007.user_id, egresados2007.run, egresados2007.nombre,
  4. egresados2008.user_id, egresados2008.run, egresados2008.nombre
  5. FROM egresados2005, egresados2006, egresados2007, egresados2008
  6. WHERE egresados2005.codigo > 7 AND egresados2006.codigo > 7 AND
  7. egresados2007.codigo > 7 AND egresados2008.codigo

Saludos
  #4 (permalink)  
Antiguo 13/11/2008, 08:22
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Misma consulta en varias tablas similares de forma simultanea

¡Muchas gracias!

Con una de las respuestas lo conseguí, pero ambas me ayudaron a aprender.

Este es lejos el mejor foro que he encontrado, el que más me ha ayudado.
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 10:37.