有两个数据库,a数据库中有user表,有userid,name,pwd...等字段,b数据库中有member表,有userid,name,pwd,date....等等字段。如何把这两个表给关联起来。这两个数据库是依赖不同的系统,需要依据a项目把b项目整合到a项目中。用的是mysql数据库。如何把这两个不同的数据库中的表关联起来呢。。我是这样想的:不知道对不对。在b数据库中建立一张中间表a_b,里面就连个字段。一个是a_userid和b_userid。基本上就这样了。但是如果要对其进行CRUD呢??怎么弄。。纠结。。

解决方案 »

  1.   

    select au.*,am.* from a.user au join b.member am on au.userid = am.userid 
    跨库查询
      

  2.   

    有一个问题很关键,这两个数据库,是在同一个MySQL服务器上?还是在两个独立的MySQL服务器上?如果是前者比较简单,在 表 前加上 数据库 限定符即可,类似:
      Select u.*, m.*
      From a.user u, b.member m
      Where u.userid = m.userid
    但如果是完全独立的两个MySQL服务器,这事就比较悲惨了
      

  3.   

    你那种建表方式:
      如果说 id 是不能一一对应的,那么建立映射表是绝对有必要的。
      如果两个库的id其实已经是一一对应的,那么就完全没必要建立映射表了。
      

  4.   

    现在做的这个项目是要把一个独立的开源论坛项目整合到我们网站上。如何把这两个独立的项目整合到一块呢。而且这两个项目是各自独立的。都能run起来。
    数据库也是相互独立的。更悲催的是两个项目用的是完全不一样的框架。一个是springMVC+ibatis,另一个是strus1+hibernate...哪位牛人给点思路吧。。还一个问题是:我在一个项目中如何访问另一个项目中的类。。顺便吐槽:尼玛,这开源论坛什么注释也没有,什么文档也没有。。看的我TM要崩溃了。。愤怒难忍。
      

  5.   

    看你要整合到什么粒度了,简单点建议这样:
    1、数据库部署在一个服务上,分两个库而已;
    2、整合的那个开源论坛,用户ID跟你的主网站保持一致,或者干脆不要用开源论坛自己的用户注册功能,你修改下你自己网站的用户注册,实现同时写两边的 用户表,保证绝对一致。
    3、两个应用独立部署,然后用单点登录进行集成。关于第二步,其实还有其它变通的做法:
    比如把开源论坛的用户表删除,改为查询你本网站用户库的视图;
    或者改为统一使用LDAP服务器来提供统一用户管理等。
    话说有很好的开源论坛啊,为啥会找了个没注释没文档的
      

  6.   

    又有这样一个问题:两个独立的数据库(A,B)分别有两个独立的表(a,b)..对应的(这样方便点)现在a表有数据,b表没有数据,如何把a表的uid更新到b表的uid中a表和b表的uid类型都一样。是MYSQL数据库。同一个服务器上。这个用存储过程写吗?怎么写??
      

  7.   

    不记得MySQL关于子查询的支持要求,大致这样试试看:Insert Into B.b(uid, xxoo, xxoo)
    Select uid, xxoo, xxoo From A.a
    Where uid NOT IN (
      Select uid From B.b
    )
      

  8.   

    比如我有两张表
    A
    NO       F1        F2        F3        F4
    1        11        111
    2        22        222
    3        33        333B
    NO       F3        F4
    1        1111      11111
    2        2222      22222
    3        3333      33333怎样把B里面的数据更新到A里面?
    要求演示效果
    NO       F1        F2        F3        F4
    1        11        111      1111      11111
    2        22        222      2222      22222
    3        33        333      3333      33333
      select A.no,A.F1,A.F2,B.F3,B.F4 from A,B where A.no=B.no;
    我只会把他们查出来,不会更新用的是Oracle
      

  9.   

    insert into A(F3,F4)
    select F3,F4 from B where no in
    (select no from B);这样写是报下面错误
    第 1 行出现错误:
    ORA-01400: 无法将 NULL 插入 ("SCOTT"."A"."NO")select F3,F4 from B where no in
    (select no from B);这样打印
    F3    F4
    1111 11111
    2222 22222
    3333 33333
      

  10.   

    BEGIN;
    INSERT INTO bbs.jrun_members(uid) SELECT user_id FROM shop.`user`
    where user_id NOT IN
    (
    SELECT uid from bbs.jrun_members
    );
    END;这样插入还是不行啊。肿么办?[Err] 1364 - Field 'salt' doesn't have a default value抛这个异常。
      

  11.   

    ORA-01400: 无法将 NULL 插入 ("SCOTT"."A"."NO")
    这个错误是说有NULL值,那么或者你要过滤掉它。可以用 IS NOT NULL 来过滤掉,类似:
    INSERT INTO bbs.jrun_members(uid) 
    SELECT user_id FROM shop.`user`
    WHERE user_id IS NOT NULL
      And user_id NOT IN (
        SELECT uid from bbs.jrun_members
      );
      

  12.   


    我在网上找了一个方法:
    打开my.ini,查找
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    改成这个就不抛那异常了。
    但是现在
    [Err] 1062 - Duplicate entry '' for key 2又来这个异常了。bbs数据库中的那个member表的uid设了主键,没设自增,没用她建索引。什么情况啊。这是。。
      

  13.   

    INSERT INTO bbs.jrun_members(uid) SELECT user_id FROM nodoor.`user`
            where user_id IS NOT NULL AND user_id NOT IN
            (
                SELECT uid from bbs.jrun_members
            );sql语句是没有错的。刚才抛的异常是:重复的null值,建了3个索引,但是有两个是unique。所以重复了null值,把他改成normal就是行了。谢谢楼上的大牛帮我解答。。
      

  14.   

    struts1中的action中继承了BaseAction类,没有实现execute方法,实现了这样一个方法
    public ActionForward login(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
    System.out.println("come here ....");
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    System.out.println(username+","+password);
    if("zhangsan".equals(username)&&"123".equals(password))
    return mapping.findForward("success");
    else
    return mapping.findForward("login");
    }
    然后struts.ccnfig.xml文件中
     <action-mappings>  
        <action validate="false" parameter="action" path="/login" scope="request" type="test.action.LoginAction">   
          <forward name="success" path="/loginSuccess.jsp"></forward>  
          <forward name="login" path="/login.jsp"></forward>  
        </action>  
     </action-mappings>  
    为什么不能执行到action类中的login方法,要怎么才能执行进去,以前学的struts2,没整过这个,哪位大牛给说说。顺便说说整个执行流程吧。谢谢。。
      

  15.   

    BEGIN;
            INSERT INTO bbs.jrun_members(uid) SELECT user_id FROM shop.`user`
            where user_id NOT IN
            (
                SELECT uid from bbs.jrun_members
            );
    END;
      

  16.   


    HELP....
      

  17.   

    给你个思路  不知道mysql可以不 如果是 oracle   可以 select * from table@database 这个是实例名是可以跨库查询的