2016-05-20 20 views
0

PHP newbie here!私は数日間このことに苦しんでいました。私はこれを私自身が理解できないと決めました。SQLクエリで重複した結果

私は基本的に2つのデータベーステーブル "projects_2016"と "attachment"を持っています。 「添付ファイル」の

私は一番上の表に表示し、一致したID番号(およびそれがexsits場合)を確認するために、「projects_2016」のデータを表示したい、それが「project_2016データ」の下のすべての結果が一覧表示されます。

現時点では素晴らしいですが、すべての「添付ファイル」エントリの「projects_2016」データが複製されます。

ここに私のコードは、任意の入力をいただきありがとうございます!

PSはSQLの注入についてもそれほど心配していません。まだそれを学ぶ!

<?php include '../../../connection_config.php'; 

$sql = "SELECT DISTINCT * FROM attachment JOIN projects_2016 ON    attachment.attachment_ABE_project_number = projects_2016.id ORDER BY `attachment_ABE_project_number` DESC"; 

$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

while($row = $result->fetch_assoc()) { 

?> 

<table width="20" border="1" cellspacing="0" cellpadding="2"> 
<tr> 
<th height="0" scope="col"><table width="990" border="0" align= "center" cellpadding="3" cellspacing="0"> 
     <tr class="text_report"> 
      <td width="107" height="30" align="left" valign="middle" nowrap="nowrap" bgcolor="#F5F5F5"><strong>PNo</strong></td> 
      <td width="871" align="left" valign="middle" nowrap="nowrap" bgcolor="#F5F5F5"><strong>Project Name</strong></td> 
     </tr> 
     <tr> 
      <td height="20" align="left" valign="middle" bgcolor="#FFFFFF" class="text_report"><strong><?php echo "<br>". $row["ID"]. "<br>";?></strong></td> 
      <td height="20" align="left" valign="middle" bgcolor= "#FFFFFF" class="text_report"><strong><?php echo "<br>". $row["project_name"]. "<br>";?></strong></td> 
     </tr> 
     </table> 
     <?php 

$photo_id = $row["ID"]; 

$contacts = "SELECT DISTINCT * FROM attachment WHERE attachment_ABE_project_number = '$photo_id'" ; 

$result_contacts = $conn->query($contacts); 

if ($result_contacts->num_rows > 0) { 
// output data of each row 
while($row_contacts = $result_contacts->fetch_assoc()) { 

?> 
     <table width="990" border="0" align="center" cellpadding= "3" cellspacing="0" class="text_report"> 
      <tr> 
      <td height="0" colspan="4" align="left" valign="middle" nowrap="nowrap" bgcolor="#FFFFFF">&nbsp;</td> 
      </tr> 
      <tr> 
      <td width="319" height="30" align="left" valign="middle" nowrap="nowrap" bgcolor="#F5F5F5"><strong>File Name</strong></td> 
      <td width="279" align="left" valign="middle" nowrap="nowrap" bgcolor="#F5F5F5"><strong>File Type</strong></td> 
      <td width="315" align="left" valign="middle" nowrap="nowrap" bgcolor="#F5F5F5"><strong>File Size (KB)</strong></td> 
      <td width="53" align="right" valign="middle" nowrap="nowrap" bgcolor="#F5F5F5"><strong>View File</strong></td> 
      </tr> 
      <tr> 
      <td height="20" align="left" valign="middle" bgcolor="#FFFFFF"><?php echo $row_contacts ['file'] ?></td> 
      <td height="20" align="left" valign="middle" bgcolor="#FFFFFF"><?php echo $row_contacts ['type'] ?></td> 
      <td height="20" align="left" valign="middle" bgcolor="#FFFFFF"><?php echo $row_contacts ['size'] ?></td> 
      <td align="right" valign="middle" bgcolor="#FFFFFF"><a href="/../gauteng/uploads/<?php echo $row_contacts ['file'] ?>" target="_blank">view file</a></td> 
      </tr> 
      <tr> 
      <td height="0" colspan="4" align="left" valign="middle" bgcolor="#FFFFFF">&nbsp;</td> 
      </tr> 
      <?php 
} 
?> 
     </table> 
     <?php   



} 
?></th> 
    </tr> 
    </table> 
    <table width="1000" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <th height="26"> </th> 
    </tr> 
    </table> 
    <p> 
    <?php   


} 

} 
?> 
    </p> 
</table> 

<?php $conn->close(); 
?> 
+0

'DISTINCT *'は擬似語です – Strawberry

+0

これは、結合の仕組みです。添付ファイルごとに、複数のプロジェクトレコードが繰り返されます。結合の代わりに、おそらくあなたのwhereステートメントに "exist"をします。チェックアウト:http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html – JustAspMe

+0

ありがとうJustAspMe !!!! 100%働いた!ここで動作するコードです。 – Kyleido

答えて

0

$ sqlを= "WHERE id DESC BY ORDER(添付projects_2016.id = attachment_ABE_project_number SELECT * FROM)が存在するprojects_2016 SELECT * FROM";

関連する問題