MySql:如何从每个数据库中读取表中的每个数据库表时搜索第二个数据库表?

问题描述:

我是MySql/PHP的新手。MySql:如何从每个数据库中读取表中的每个数据库表时搜索第二个数据库表?

必须读取并显示来自Database1.table1的每一行。它包含一个具有搜索项的列,我需要将它传递给Database2.table2并处理每行读取的返回值。目前,我正在为db1.table1中的每一行创建Database2.table2的新连接,这非常慢并且效率低下。我无法更改表格结构。

谢谢!

DB1表1:

id_row type  model  har    status id   date   
1   ATX   Hybrion  88-85-5d-id-ss y   aaa12345 2011/08/12 
2   BTX   Savin  none    n   aaa12345 2010/04/05 
3   Full  Hp   44-55-sd-qw-54 y   ashley a 2011/07/25 
4   ATX   Delin  none    _   smith bon 2011/04/05 

DB2表2:

id_row id   first_name last_name dept telephone 
1   aaa12345 joe   smith  ANS  800 555 5555 
2   bbb67890 sarah  brown  ITL  800 848 8848 

因此数据库1表1是被读取并显示在一个DB2表2读如果ID是正匹配则显示信息。 ID只在db2 table2中是唯一的,db1 table1有一个多格式列,所以它可以或不可以是一个ID,以及那些行可能有重复的ID。希望这可以更好地理解我需要的东西。再次感谢!

有人建议使用EXISTS但我不知道如何,鉴于情况。

+0

首先,make a连接到DB2 *并保持打开状态*其次,确保DB2中的'id'是*索引*,因为您正在以半随机顺序访问它。 –

+0

我的第一反应是“不要关闭它”。你没有告诉我们你的环境 - 操作系统,语言,数据库库被使用,数据库在哪个服务器上 - 所以我不知道如何开始回答这个问题。 –

+0

@peter:服务器版本:5.0.26,使用php连接到像mysql_connect($ db_host,$ db_user,$ db_password)或死(“无法连接到MySQL服务器。错误:”。mysql_error()) ;'然后像mysql_select_db($ db_table)或死(“无法打开哈特福德数据库。错误:”。mysql_error());''有类似主文件通过'require'db1.php' ;需要'db2.php';'在脚本的开头,从那里一切都在使用像$ table.column和$ db1这样的引用变量$ table1 – Tumharyyaaden

假设你正在运行的具有正确的权限,看看这两个数据库的用户,那么你应该能够使用像这样的“dbname.tablename”语法连接表要做到这一点:

select t1.*, t2.* 
from database1.table1 t1 
LEFT OUTER JOIN database2.table2 t2 ON t1.id = t2.id 

这会给你从表A的所有行,并在表b中有匹配的行,从那里匹配的行(如果没有匹配的行,则为空值)。

+0

left outer join? – Andrey

+0

是的,请参阅编辑.. – StevieG

+0

@Andrey:这是完整的查询我有'SELECT $ table。*,$ table2。* FROM $ db1。$ table1 LEFT OUTER JOIN $ db2.table2 ON $ table1.id = $ table2 .id ORDER BY $ table1。$ sortbyme $ o LIMIT $ offset,$ rowsPerPage' – Tumharyyaaden