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

Unir Tablas pero antes comprobar su existencia

Estas en el tema de Unir Tablas pero antes comprobar su existencia en el foro de SQL Server en Foros del Web. Hola buenos días. Es posible comprobar la existencia de una tabla y si existe unirla a otra. Intente con esto y un union all pero ...
  #1 (permalink)  
Antiguo 02/07/2015, 08:47
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Unir Tablas pero antes comprobar su existencia

Hola buenos días.


Es posible comprobar la existencia de una tabla y si existe unirla a otra.
Intente con esto y un union all pero no pude, alguna sugerencia.

Código SQL:
Ver original
  1. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA')
  2.             BEGIN
  3.  
  4.             END
  #2 (permalink)  
Antiguo 02/07/2015, 08:52
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: Unir Tablas pero antes comprobar su existencia

como unirla a otra???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 02/07/2015, 08:59
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Unir Tablas pero antes comprobar su existencia

Por ejemplo tengo mi tabla 'TB_PRUEBA' , 'TB_PRUEBA2' Y 'TB_PRUEBA3'

Para unirlas seria algo asi
Código SQL:
Ver original
  1. SELECT * FROM TB_PRUEBA
  2. UNION ALL
  3. SELECT * FROM TB_PRUEBA2
  4. UNION ALL
  5. SELECT * FROM TB_PRUEBA3
Pero antes de esto quiero comprobar que las tablas existan

Código SQL:
Ver original
  1. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA')
  2.      BEGIN
  3.           SELECT * FROM TB_PRUEBA
  4.      END
  5.           UNION ALL
  6. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA2')
  7.       BEGIN
  8.           SELECT * FROM TB_PRUEBA2
  9.      END
  10.           UNION ALL
  11. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA3')
  12.       BEGIN
  13.           SELECT * FROM TB_PRUEBA3
  14.      END

Pero eso no me lo permite jejeje
  #4 (permalink)  
Antiguo 02/07/2015, 10:42
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Unir Tablas pero antes comprobar su existencia

¿Por qué no primero COMPRUEBAS si existen?, de ser esto cierto, pasas a unirlas, de lo contrario, pues no haces nada, mandas un mensaje de error, que se yo...
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 02/07/2015, 10:49
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: Unir Tablas pero antes comprobar su existencia

Código SQL:
Ver original
  1. DECLARE @query Nvarchar(MAX)
  2. SET @query=''
  3. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA')
  4.      BEGIN
  5.           SET @query='SELECT * FROM TB_PRUEBA'
  6.      END          
  7.  
  8. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA2')
  9.       BEGIN
  10.           IF @query<>''
  11.              SET @query=@query + 'Union All'
  12.  
  13.           SET @query=@query + 'SELECT * FROM TB_PRUEBA2'
  14.      END
  15.          
  16. IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TB_PRUEBA3')
  17.       BEGIN
  18.           IF @query<>''
  19.              SET @query=@query + 'Union All'
  20.              SET @query=@query + 'SELECT * FROM TB_PRUEBA3'
  21.      END
  22.  
  23. sp_executesql @query
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 02/07/2015, 11:41
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Unir Tablas pero antes comprobar su existencia

Muchas gracias señor Libras lo resolví de la siguiente manera .
Y si Señor IIslas primero comprobé existencia

Código SQL:
Ver original
  1. SELECT *  INTO #PRD FROM VS_PRD_2014 WHERE QNA_CANCEL <> '0'
  2.  
  3. DECLARE @CONSULTA NVARCHAR(MAX)
  4. DECLARE @QUINCENA INT
  5. DECLARE @CONTADOR INT
  6. DECLARE @TABLA VARCHAR(7)
  7.  
  8. SET @QUINCENA = (SELECT MAX(VALOR) FROM TABLAPRINCIPAL WHERE CANCEL =1)
  9. SET @CONTADOR =1
  10.  
  11. WHILE @CONTADOR < @QUINCENA+1
  12. BEGIN
  13.      
  14.         SET @TABLA=  'PRUEBA'+CAST(@CONTADOR AS VARCHAR(2))
  15.      
  16.    
  17.      IF EXISTS (SELECT * FROM sysobjects WHERE name = (@TABLA))
  18.          BEGIN
  19.                 SET @CONSULTA = 'INSERT INTO #PRD SELECT *  FROM '+ @TABLA +' WHERE QNA_CANCEL <> ''0'''
  20.                 EXEC sp_executesql @CONSULTA                                       
  21.          END
  22.     SET @CONTADOR = @CONTADOR +1
  23.  
  24.    
  25. END
  26. SELECT * FROM #PRD
  #7 (permalink)  
Antiguo 02/07/2015, 12:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Unir Tablas pero antes comprobar su existencia

Exacto !!!, debe ser mucho mas eficiente, Saludos
__________________
MCTS Isaias Islas

Etiquetas: existencia, 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 06:24.