2011-07-17 14 views
0

これを行う正しい方法が見つからないので、誰かが私にある方向性を与えることを望んでいたと思いますか?2つのSQLテーブルのエントリの合計数を合わせる

SQLデータベースは、(私は無関係なものを削除した)このように構成されています

Requests 
R_ID R_FulfilledBy 
1  Bob 
2  Craig 
3  Bob 

SIMs 
SM_ID SM_FulfilledBy 
1  Bob 
2  Craig 
3  Bob 

私は、この出力で終わることを望んでいる:

Fulfilled By Requests 
Bob   4 
Craig  2 

ここに私のPHPは/ですHTML:現在

<div id="table"> 
     <?php 

      //Connect to MySQL Database 
      $connection = mysql_connect($runnerdbServer, $runnerdbUser, $runnerdbPass); 
      mysql_select_db($runnerdbName, $connection) or die("MysQL Error"); 

          $query = "SELECT R_FulfilledBy, COUNT(R_ID) FROM Requests GROUP BY R_FulfilledBy ORDER BY COUNT(R_ID) DESC"; 


          $result = mysql_query($query) or die(mysql_error()); 



     ?> 

    <!-- Number of Runners (Counts total number of records in Requests table) --> 
    <table border='0' width='50%'> 
     <tr> 
     <th>Runners Fulfilled</th> 
     <tr><td><?php 
      $query = mysql_query("SELECT * FROM Requests"); 
      $number=mysql_num_rows($query); 
      echo $number; 
      ?> 
     </td></tr> 
    </table> 
    &nbsp; 

    <!-- Fulfillment Stats --> 
    <table border='0' width='50%'> 
     <tr> 
     <th>Name</th> 
     <th>Runners Fulfilled</th> 
     </tr> 

    <? 
    // Print out result (I want this to calculate requests fulfilled by each user in 'Requests' and 'SIMs' table) 
    while($row = mysql_fetch_array($result)){ 
    echo "<tr>"; 
    echo "<td>". $row['R_FulfilledBy'] ."</td>"; 
    echo "<td>". $row['COUNT(R_ID)'] ."</td>"; 
    echo "</tr>"; 
    } 

    ?> 

    </table> 

それが唯一の要求 'テーブルからレコードを計算しています:(

答えて

4

あなたは、サブクエリで一緒に2つのテーブルをunion allできます

select FulfilledBy 
,  count(*) 
from (
     select R_FulfilledBy as FulfilledBy 
     from Requests 
     union all 
     select SM_FulfilledBy 
     from SIMs 
     ) as SubQueryAlias 
group by 
     FulfilledBy 

利用union all代わりのunion第二は、重複を排除しているため、誰もが1

+0

これは正しいです。次のPHPコードの行名も変更してください。 – Konerak

0

の最大数を与えることになる私はこれでいいと思う:

SELECT R_FulfilledBy, COUNT(*) + 
(SELECT COUNT(*) FROM SIMs WHERE R_FulfilledBy = SM_FulfilledBy) 
FROM Requests GROUP BY R_FulfilledBy 
関連する問題