sql usando 2 bases de datos distintas

29/05/2007 - 13:56 por Oscar | Informe spam
Hola

Tengo 2 tablas, pero cada una en una base de datos distintas, aunque en el
mismo servidor SQL. Hay alguna forma de hacer una sql que trabaje con estas
2 tablas, aunque sean de BD distintas?

Saludos, Oscar

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
29/05/2007 - 15:58 | Informe spam
Oscar,

Si, para eso debes cualificar las tablas con el nombre de la db.

Ejemplo:

select a.*, b.*
from db1.dbo.t1 as a inner join db2.dbo.t2 as b
on a.pk = b.pk
go


AMB


"Oscar" wrote:

Mostrar la cita
#2 Oscar
29/05/2007 - 17:31 | Informe spam
Hola

Con lo que me has dicho he conseguido hacer la siguiente SQL:

SELECT *
FROM (SELECT (bd_epsilon.dbo.TRABAJADORES.ID_EMPRESA +
bd_epsilon.dbo.TRABAJADORES.ID_TRABAJADOR) AS OPERARIO,
HORAS_SEMANALES AS TOTAL
FROM bd_epsilon.dbo.CENTROS INNER JOIN
bd_epsilon.dbo.CENTROS_FISICOS
ON
bd_epsilon.dbo.CENTROS.ID_CENTRO_FISICO
= bd_epsilon.dbo.CENTROS_FISICOS.ID_CENTRO_FISICO INNER JOIN
bd_epsilon.dbo.TRABAJADORES ON
bd_epsilon.dbo.CENTROS.ID_EMPRESA = bd_epsilon.dbo.TRABAJADORES.ID_EMPRESA
AND
bd_epsilon.dbo.CENTROS.CCC =
bd_epsilon.dbo.TRABAJADORES.CCC AND
bd_epsilon.dbo.CENTROS.ID_CENTRO
= bd_epsilon.dbo.TRABAJADORES.ID_CENTRO) EPSILON INNER JOIN
(SELECT PTTRAINS_OPERARIO AS OPERARIO,
SUM(PTTRAINS_TOTAL_HORAS) AS TOTAL
FROM PT_TRABAJADORES_JORNADA
GROUP BY PTTRAINS_OPERARIO) SERVIGEST ON
SERVIGEST.OPERARIO = EPSILON.OPERARIO

Pero me da un error de collation conflict, porque puede ser?

Saludos y gracias, Oscar
"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#3 Alejandro Mesa
29/05/2007 - 19:46 | Informe spam
Oscar,

Por favor, postea el mensaje de error tal y como te aparece. Este error
puede darse al compara o concatenar columnas tipo char / varchar / nchar /
nvarchar, etc. que tienen diferente collation. Como solucion rapida, toma una
de las dos collation y fuerzala durante la operacion, usando COLLATE.

Ejemplo:

create table #t1 (
c1 varchar(50) collate Traditional_Spanish_CI_AI not null
)

create table #t2 (
c1 varchar(50) collate Traditional_Spanish_CS_AS not null
)

insert into #t1 values('Microsoft')
insert into #t2 values('Microsoft')
go

select
*
from
#t1 as t1
inner join
#t2 as t2
on t1.c1 = t2.c1
go

select
*
from
#t1 as t1
inner join
#t2 as t2
on t1.c1 = t2.c1 collate Traditional_Spanish_CI_AI
go

drop table #t1, #t2
go


AMB





"Oscar" wrote:

Mostrar la cita
#4 JCASTIBLANCO
30/05/2007 - 03:51 | Informe spam
Hola Alejandro Mesa,

con respecto a la solución que planteas de forzar el collation, tiene algo
que ver la configuración de collation settings que se halla elegido al
instalar la instacia de sql?. Es decir, si yo elegí la configuración
Modern_Spanish puedo trabajar sin problema una variable forzandola a ser de
un tipo Japanese?

"Alejandro Mesa" wrote:

Mostrar la cita
#5 Alejandro Mesa
30/05/2007 - 15:40 | Informe spam
JCASTIBLANCO,

No entiendo bien tu inquietud. No por forzar una collation, puedes comparar
texto en Español contra texto en Japones. Forzar una collation no significa
que SQL Server traducira el texto.

Existe collation a nivel de servidor, database y columna. Si no se es
consistente a la hora de crear objectos que trabajan con collation, entonces
podemos terminar, por ejemplo, teniendo columnas con diferente collation. Si
deseas trabajar con una collation en particular, enonces se debe usar COLLATE
cuando creamos el objeto.


AMB

"JCASTIBLANCO" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida