sql >> Database >  >> RDS >> Mysql

Hoe kan ik een tabel herhalen met de gecombineerde resultaten van twee vergelijkbare query's uit twee verschillende databases?

Bewerken:

Ervan uitgaande dat uw resultaten als volgt zijn:

Schrijf

number company    db1 Count
1      SuperCorp  5
2      SuperCorp  10

Rapporteren

number company    db2 Count
2      SuperCorp  10
3      SuperCorp  20

Als u een tabel als deze wilt weergeven

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

U moet de resultaten van de twee query's samenvoegen voordat u ze op het scherm kunt afdrukken. Dit is mogelijk dankzij uw 'nummer'-kolom die kan worden gebruikt als de sleutel van uw PHP-array.

U moet ook uw SQL-query's aanpassen om een ​​nepkolom op te nemen die de andere databasetelling vertegenwoordigt:

$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";

En combineer dan de 2 resultaten ervoor om ze als volgt weer te geven:

$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. Trage locatiegebaseerde zoekopdracht met zoekresultaten

  2. Beginnen met bloggen voor HTML5 en CSS3

  3. MySQL selecteer resultaat opslaan in c# variabele

  4. Schending van integriteitsbeperking:1062 dubbele invoer '1' voor sleutel 'PRIMARY'