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

select de varias tablas

Estas en el tema de select de varias tablas en el foro de SQL Server en Foros del Web. Hola a tod@s, a ver si me pueden ayudar en lo siguiente: tengo una BD llamada teléfonos con varias tablas con los mismos campos en ...
  #1 (permalink)  
Antiguo 06/11/2013, 10:25
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
select de varias tablas

Hola a tod@s,

a ver si me pueden ayudar en lo siguiente:
tengo una BD llamada teléfonos
con varias tablas con los mismos campos en las tablas..., tabla2012, tabla2013

para sacar los datos de uno de los campos de ambas tablas uso el comando unión, es decir:

select CAMPO3 from tabla2012
unión
select CAMPO3 from tabla2013

Mi pregunta es, existe un comando que me muestre el CAMPO3 de todas las tablas que haya en la BD??
Porque si el año que viene creo la tabla 2014, tendría que modificar las select....

Espero su ayuda y muchas gracias
  #2 (permalink)  
Antiguo 06/11/2013, 10:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: select de varias tablas

y no has pensado mejor cambiar la estructura de tus tablas? en lugar de tener los mismos campos en N tablas porque no agregas un campo fecha?? digo si eso no es posible para realizar lo que necesitas tendrias que hacer un query dinamico que busque en las vistas de sistema todas las tablas que tengan por ejemplo el nombre tabla20NN, te dejo un pequeño ejemplo de como obtener los registros de todas las tablas de una base de datos(ya con eso puedes jugar un poco para obtener lo que quieres)

Código SQL:
Ver original
  1. DROP TABLE #temp
  2. DROP TABLE #t
  3. SELECT TABLE_NAME, IDENTITY(INT,1,1) AS ROW
  4. INTO #temp
  5. FROM information_schema.TABLES
  6. WHERE (table_type = 'base table')
  7.  
  8.  
  9. CREATE TABLE #t
  10. (
  11.     [name] NVARCHAR(128),
  12.     [ROWS] CHAR(11),
  13.     reserved VARCHAR(18),
  14.     DATA VARCHAR(18),
  15.     index_size VARCHAR(18),
  16.     unused VARCHAR(18)
  17. )
  18.  
  19.  
  20. DECLARE
  21. @contador INT,
  22. @query VARCHAR(MAX),
  23. @x INT,
  24. @nombre VARCHAR(200)
  25.  
  26. SELECT @contador=COUNT(*) FROM #temp
  27. SET @x=1
  28. SET @query=''
  29. while @x<=@contador
  30. BEGIN
  31.     SELECT @nombre=TABLE_NAME FROM #temp WHERE ROW=@x
  32.        
  33.     SET @query='insert into #t exec sp_spaceused ' + CHAR(39) + @nombre + CHAR(39)  
  34.     EXEC Sp_sqlExec @query    
  35.     SET @x=@x+1
  36. END
  37.  
  38. SELECT * FROM #t

Este query te obtiene las estadisticas de todas las tablas de tu base de datos(espacio usando en disco, renglones etc)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 06/11/2013, 10:56
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años
Puntos: 1
Respuesta: select de varias tablas

gracias por la pronta respuesta,

El problema es que cada tabla, tiene millones de registros, por eso creo las tablas por años
Porque supongo que crear una sola tabla con todos los registros puede ser una locura en buscar algún campo ...... (aunque podría probarlo.....)

Gracias por la respuesta, probaré lo que me dices
  #4 (permalink)  
Antiguo 06/11/2013, 11:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: select de varias tablas

para esos existen las particiones en las tablas, los file groups etc etc..... y seria de un mejor rendimiento, ademas que tanto usas los historicos de hace 3-4 años?? si son pocos podrias crear una tabla para puros historicos y en la del año nada mas tener los registros que le corresponden :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select, tabla, tablas
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 02:30.