我试图从两个表合并数据,从两个不同的数据库在一起,并按时间排序结果。
我在我的代码中使用PDO,我可以像这样连接到两个数据库:$dbh
(database1) 和$Ndbh
(database2)
这就是我困惑的地方。我知道我可以使用上面提到的两个数据库选择器从每个数据库获取数据-但是我如何合并数据?
应该可以:
$query1 = $dbh->query('SELECT * FROM table1')->fetchAll(PDO::FETCH_ASSOC);
$query2 = $Ndbh ->query('SELECT * FROM table2')->fetchAll(PDO::FETCH_ASSOC);
$data = array_merge($query1, $query2);
usort($data , function($a, $b) {
return $a['time'] - $b['time'];
});
成功了!下面是我使用的代码:
SELECT DISTINCT t1.id, t1.title, t1.text, t1.time, t1.userid, t1.type,
t2.id, t2.text, t2.time, t2.timeline_id, t2.type, t2.url
FROM database1.table1 t1
INNER JOIN database2.table2 t2 on t1.userid = t2.timeline_id;
请注意,在两个表之间有一个共同的键值——在本例中是t1.userid
和t2.timeline_id
我在PDO中使用它,如下:
$stmt = $dbh->prepare("SELECT DISTINCT t1.id, t1.title, t1.text, t1.time, t1.userid, t1.type,
t2.id, t2.text, t2.time, t2.timeline_id, t2.type, t2.url
FROM littlebu_maindb.growl t1
INNER JOIN littlebu_social.notifications t2 on t1.userid = t2.timeline_id
WHERE t1.userid = :userid AND t2.timeline_id = :userid ;");