2016-05-29 5 views
2

私はPHPを初めて使い、データベースからデータをクエリするロジックについていくつか問題があります。(PHP、MYSQL)異なるデータベーステーブルから条件をチェックするには?

まず、アプリケーションファイルと位置ファイルの2つのデータベースがある場合。

アプリケーションファイルは

  1. APPLICATION_ID、2.Applicant_ID、3.Position_ID

含み、位置ファイルは

1.Position_ID、2.Position_Name、3.Department_Name

を含みます

未完のコードを表示させてください...

リンク(私はHTMLですべてがフィールドを提供コピー) - >https://jsfiddle.net/2e50wvzq/

私はここに焦点を当てたいと思います...

$result4 = mysql_query("SELECT * FROM position"); 
while ($rows4 = mysql_fetch_array($result4, MYSQL_ASSOC)){ 

    $pos_dept = $rows4['Position_Department']; 

    $result5 = mysql_query("SELECT * FROM position WHERE Position_Department = '".$pos_dept."' "); 

    while($rows5 = mysql_fetch_array($result5, MYSQL_ASSOC)){ 

      $pos_id = $rows5['Position_ID']; 

    } 

    for($i = 0; $i < $counter; $i++){  
      if($dept_array[$i] == $pos_dept){ 

      }else{ 

         $result6 = mysql_query("SELECT App_Data_ID FROM application_data_file WHERE Position_ID = '".$pos_id."' "); 


         $pos_app = 0; 


         while ($rows6= mysql_fetch_array($result6, MYSQL_ASSOC)){ 

          $pos_a = $rows6['App_Data_ID']; 

          $pos_app++; 

         } 

         array_push($dept_array," '".$pos_dept."' "); 


         ?> 
         <TR> 

         <TD> <?php echo $rows4['Position_Department']; ?> </TD> 
         <TD> <?php echo $rows4['Recruitment_Seat']; ?> </TD> 

         <TD> <?php echo $pos_app; ?>     </TD> 
         <TD> <?php echo $recruited; ?>     </TD> 
         <TD> <?php echo $Vacancy; ?>     </TD> 



         </TR> 

<?php 
       } 
     } 
} 
?> 

は、データベース内のデータが

...ような状態であることを想定

アプリケーションファイル

  1. 00001、00001、00001

  2. 00002、00003、00001

  3. 00003、00002、00002

  4. 00004、00004、00001

  5. 00005、00006、00002

と位置ファイル

  1. 00001、プログラマー、 IT部門

  2. 00002、私のコードとして会計士、会計

、表中の結果は、この絵(最初の表の「総応募」タブでフォーカス)

ようでなければなりません

- >enter image description here

私の考えから、私は結果の上に掲載され、私はコードを使用する場合は、これまでに、表2(または多分に類似)のようなものに変わります。

表1の結果のようにどのように結果を提供できますか?助けてください。私のクエリが、コードで

+0

それが動作しないか、期待通りではない作品ない場合は、お知らせください、そうでない場合は、あなたがマークしなければなりません将来的に他の人が気づくように受け入れられた。 –

+0

@EdvinTenovim遅くチェックして申し訳ありません。私はあなたのコードを通過しますので、コード – gznero

答えて

1

だけでダブルチェック名は(私はそれをテストしているため)、全体で動作します:

$sql = 'SELECT Department_Name, COUNT(*) AS Total FROM `application_file` LEFT JOIN `position_file` ON (application_file.Position_ID = position_file.Position_ID) GROUP BY Department_Name ORDER BY application_file.Position_ID '; 
$result = $db->query($sql); 
$total = 0; 

if ($result->num_rows > 0) 
{ 
    echo '<table class="table">'; 
    echo '<tr><td>Department</td><td>Total Recruitments</td><td>Total Applicant</td><td>Making Contract</td><td>Slot left</td></tr>'; 

    while($row = $result->fetch_assoc()) 
    { 
     echo '<tr><td>'.$row['Department_Name'].'</td><td>x</td><td>'.$row['Total'].'</td><td>x</td><td>x</td></tr>'; 
     $total += $row['Total']; 
    } 

    echo '<tr><td>Total</td><td>x</td><td>'.$total.'</td><td>x</td><td>x</td></tr>'; 
} 
else 
    echo '0 results'; 
+0

を通過しています。 "Total"はデータベースにはありません。実際は上記のすべての行から計算する必要があります。また、 "$ result = $ db-> query($ sql);に致命的なエラーがあることがわかりました。 – gznero

+0

これは本当です。「Total」はあなたの列の1つではありませんが、Totalはクエリから現れる新しい列です。また、mysqliの代わりにPHPのmysqlを使用していることに気付きました。そのため、致命的なエラーが発生します。 mysqlが非推奨であるため、mysqliの設定方法を確認してください。 –

+0

と$ sql行の "Total"を置き換えることはできますか? – gznero

関連する問題