0

我有两个表 TabA 和 TabB。TabA 在 DB_A 中,TabB 在 'DBX'_B 中。

现在我需要从 DBA 的 TabA 的字段中获取 DBX_B 名称,并将它们加入查询以从这两个表中提取数据。

 DBA.TabA:
 ID        DB_Name      UserName    Password
 -------------------------------------------
 101       DBX          xyz         abc


 DBX_B.TabB:

 ID        Type      FirstName      LastName
 -------------------------------------------
 101       Admin     xyz            abc

我需要从中拉出并ID, Username, Password从中DBA.TabA拉出。但是可以从 DB_NAME 中识别要使用的第二个数据库名称,并将其与DBA.TabA.DB_Name' +之类的字符串连接起来。从两者的 ID 上加入这两个表。Type, Firstname, LastNameDBX_B.TabB_B'. So the 2nd database to pull from is_B

查询可能类似于:

  SELECT DBA.TabA.ID, DBA.TabA.Username, DBA.TabA.Password, 
         DB2.TabB.Type, DB2.TabB.FirstName, DB2.TabB.Lastname 
    FROM DBA, CONCAT(DBA.TabA.DB_Name, '_B') as DB2
   WHERE DBA.TabA.ID = DB2.TabB.ID

当然,我们也可以使用 Join 而不是 where。

这样的事情可能吗?想法?

4

2 回答 2

0

You could possibly do this with some subSelects, but performance will take a huge hit, to the point that it just won't be worth it. You might be better off pulling your tables into whatever your middle tier is (php?) and joining the data together in there. How you do that will depend on what your middle tier is.

There is something flawed in your database design, if you are still in the design phase, STOP, and redesign, hire someone if you have to, getting your Data model designed correctly now will save you so much future pain. If you are maintaining something and stuck with what you have, using the middle tier will be your best bet.

于 2012-07-13T17:13:17.740 回答
0

正如 Oli 所说,您不能在 mysql 和大多数关系数据库程序中执行此操作,您必须运行一个 use 命令来指示 RDBMS 使用您的数据库,因为它可能存储了许多不同的数据库。

例如,当您登录 mysql 时,您必须运行:

use DB_NAME;

指示它使用该特定数据库,那么只有您可以访问其表。

于 2012-07-13T17:10:35.880 回答