Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để lặp lại một bảng với kết quả kết hợp của hai truy vấn giống nhau từ hai cơ sở dữ liệu khác nhau?

Chỉnh sửa:

Giả sử kết quả của bạn như thế này:

Viết

number company    db1 Count
1      SuperCorp  5
2      SuperCorp  10

Báo cáo

number company    db2 Count
2      SuperCorp  10
3      SuperCorp  20

Nếu bạn muốn hiển thị một bảng như thế này

number company    db1 Count db2 Count
1      SuperCorp  5         0
2      SuperCorp  10        10
3      SuperCorp  0         20

Bạn cần hợp nhất kết quả của hai truy vấn trước đó để in chúng ra màn hình. Điều này có thể thực hiện được nhờ cột 'số' của bạn có thể được sử dụng làm khóa của mảng PHP của bạn.

Bạn cũng cần sửa đổi các truy vấn SQL của mình để bao gồm một cột giả đại diện cho số lượng cơ sở dữ liệu khác:

$sql1 = "SELECT num.number AS Number, com.name As company, count(*)   As \"db1 count\", 0   As \"db2 count\" 
                FROM db1.db.job_processing AS jp
                LEFT JOIN db1.db.number AS num ON num.id=jp.number_id 
                LEFT JOIN db1.db.company AS com on com.id=num.company_id 
                WHERE jp.show=1 AND jp.processing_complete=1 
                AND jp.call_start_time BETWEEN '2016-12-17' AND '2017-01-03'
                GROUP BY Number
                ORDER BY Number
                LIMIT 20";

$sql2 = "SELECT num.number AS Number, com.name AS company, COUNT(*) AS \"db2 Count\", 0   As \"db1 count\" 
            FROM db2.db.job_processing AS jp
            LEFT JOIN db2.db.number AS num ON num.id=jp.number_id 
            LEFT JOIN db2.db.company AS com on com.id=num.company_id 
            WHERE jp.show=1 AND jp.processing_complete=1 
            AND jp.call_start_time BETWEEN '2016-12-17' AND '2017-01-03'
            GROUP BY Number
            LIMIT 20";

Và sau đó kết hợp 2 kết quả trước đó để hiển thị chúng, như sau:

$results = array();
while($row = $result1->fetch_assoc()) {
     //Adding all the 1st query results 
     $results[$row['number']] = $row;
}

while($row = $result2->fetch_assoc()) {
     if(! isset($results[$row['number']]) {
          //Mean's this row is not present in the 1st database, so add it
          $results[$row['number']] = $row;
     }else {
          //Just merging the db2 Count from the 2nd database since other fields are the same
          $results[$row['number']]['db2 Count'] = $row['db2 Count'];
     }         
}


if ($results) {
      echo"<TABLE><caption>Total Call Count Overview</caption><TR>
      <TH>Number</TH>
      <TH>Company</TH>
      <TH>db1 Count</TH>
      <TH>db2 Count</TH></TR>";

    foreach($results as $row) {
         echo"<TR><TD>". $row["number"]. "</TD>";
         echo"<TD>". $row["company"]. "</TD>";
         echo"<TD>". $row["db1 Count"]. "</TD>";
         echo"<TD>". $row["db2 Count"]. "</TD></TR>";
    }
    echo"</TABLE>";
} else {
     echo"0 Results";
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm mã hóa Base58 trong PostgreSQL

  2. MySQL:Tìm các hàng không tham gia vào mối quan hệ

  3. Làm cách nào chúng ta có thể sử dụng lại id đã xóa từ bất kỳ bảng MySQL-DB nào?

  4. Tham gia các bảng từ hai máy chủ khác nhau

  5. Cách thu nhỏ / thanh lọc tệp ibdata1 trong MySQL