各位大仙,现在我要从三个数据库取值。a、b、c
a的1表,和b的2表或者c的3表有关系。
我现在想select  1表 以及它关联的 2 表或者3表,该如何做?关键就是我在关联时,我不知道它是要从b中取值还是去C中取值(当然通过1表中的某个字段可以知道它要关联哪个数据库)

解决方案 »

  1.   

    select * from a.dbo.1表 a left join b.dbo.2表 on a.id=b.id
      

  2.   

    谢谢楼上,可是我不确定后面要连接的是b啊,可能我说的不明白
    如果a 只和 b关联那么这么写就可以了
    select * from 1  left join   b..2 on 1.id_=2.id_  
    现在是不确定是b,可能是c  d  e  f。
    现在1中有个字段name_里面写的就是要关联的数据库名,现在该如何写?
      

  3.   

    select * 
    from db1.dbo.tbname A,db2.dbo.tbname B
    where A.id = B.id
      

  4.   

    select *, case a.name_ when 'a' then a.column when 'b' then b.column else c.column end,
    from a.dbo.1表 a 
    left join b.dbo.2表 b on a.id=b.id 
    left join c.dbo.3表 c on a.id=c.id
      

  5.   

    动态SQL吧,根据A表某个字段里面的值,生成对应的动态SQL语句。
      

  6.   

    SQLSERVER Managerment Studio下, 服务器对象->链接服务器,右键,新建一个链接,然后查询分析器中直接这样查:SELECT * FROM 服务器1名.数据库1名.dbo.[TableName1] a,服务器2名.数据库2名.dbo.[TableName2] b WHERE 
    A.XX=B.XXX
      

  7.   

    你把表a中需要关联的字段先进行处理,插入到一个临时表里面(动态SQL简单行转列),再用临时表进行关联就ok,但是你关联的太多数据库的话,怎么处理都会很慢的
      

  8.   

    最后是这么处理的,先搜出我要搜索的数据可能会链接到的数据库,然后把它装在一个表中,遍历这个表(比如有a、b、c三个),从a开始,搜所有我要搜的数据中name为a的,然后把它插入到一个表中。然后是b,同样接着插进去,最后是C。
    其实最后算是通过程序给搞定了。效果还不算很慢。仅供大家参考。
    分就给楼上这位了。虽然在你答之前搞定了,但是你的思路比较接近些。谢谢大家。!