簡體   English   中英

PHP / SQL-從兩個數據庫中的兩個表中選擇數據,然后按時間對其進行排序

[英]PHP/SQL - Select data from two tables, from two databases and sort them by time

我正在嘗試將來自兩個不同數據庫的兩個表中的數據合並在一起,並按時間對結果進行排序。

我在代碼中使用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.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 ;"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM