Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/06/2008, 08:06
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 10 meses
Puntos: 300
Respuesta: como unir varias tablas

Sí puedes hacer union all entre las cinco tablas

(SELECT campo1, campo2, campo3 from tabla 1)
UNION ALL
(SELECT campo1, campo2, campo3 from tabla 2)
UNION ALL
(SELECT campo1, campo2, campo3 from tabla 3)
UNION ALL
(SELECT campo1, campo2, campo3 from tabla 4)
UNION ALL
(SELECT campo1, campo2, campo3 from tabla 5)
WHERE campo2 LIKE '%loquequieras%' ORDER BY campo3

Observa el uso de los paréntesis. El where está fuera de los paréntesis porque afecta a los registros de las 5 tablas; puede usarse dentro de cada uno de los paréntesis un WHERE específico para cada tabla, pero eso ya no permitiría un where fuera de los paréntesis. Piensa, además, que los campos de cada tabla deben aparecer en el mismo número y que la tabla que sirve de referencia es la primera (podrías usar distintos campos, pero la referencia en el where, tal y como está, debería hacerse a los nombres de los campos de la primera tabla o a los alias creados en ella).

Pero el union all reúne sólo temporalmente las tablas. Los registros seguirán estando en distintas tablas. Si quieres reunir de una manera definitiva en una tabla todos los registros de las cinco tablas (deberías preguntarte por qué separaste en 5 tablas los registros), lo primero que debes saber es que los id cambiarán y si tienes relaciones establecidas con otras tablas a partir de ellos, podrás tener muchos problemas. Por otra parte, no sé a qué base de datos te refieres y he imaginado que a MySQL, pero tampoco nos dices si son tablas MyIsam o InnoDB. Si son MyIsam y no tienes tablas relacionadas con estas cinco tablas, podrás reunir fácilmente la información en una tabla, pero respóndenos primero a estos interrogantes... Luego, si es que sigues queriendo hacerlo, te diremos cómo hacerlo.