PHP / SQL - 从两个表中选择数据,从两个数据库中按时间对它们进行排序

时间:2015-08-15 13:08:05

标签: php mysql pdo

我正在尝试将两个表中的数据从两个不同的数据库合并在一起,并按时间对结果进行排序。

我在我的代码中使用PDO,我可以像这样连接到两个数据库: $dbh (database1)$Ndbh (database2)

这是我感到困惑的地方。我知道我可以使用上面提到的两个数据库选择器从每个数据库中获取数据 - 但是如何合并数据呢?

2 个答案:

答案 0 :(得分:0)

这应该有效:

$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'];
});

答案 1 :(得分:0)

搞定了!这是我用过的代码:

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.useridt2.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 ;");