0

現在、次のような2つのテーブルがあります。

ここに画像の説明を入力

これら 2 つのテーブルのコードは次のようになります。

<table width="600" border="1">  
<tr>   
   <th width="91"> <div align="center">Mail_ID  </div></th> 
   <th width="91"> <div align="center">Status  </div></th> 
   <th width="91"> <div align="center">Datum  </div></th> 
</tr>
<?php 
$j = 0;  
while($objResult2 = mysql_fetch_array($objQuery2))  
{  
$j++;  
?> 
<tr>   
   <td><div align="center"><?=$objResult2["Mail_ID"];?> </div></td> 
   <td><div align="center"><?=$objResult2["Status"];?> </div></td> 
   <td><div align="center"><?=$objResult2["Datum"];?> </div></td>  
</tr>
<?php  
}  
?>
</table>
<br/>
<table width="600" border="1">  
<tr> 
   <th width="91"> <div align="center">ID  </div></th>  
   <th width="91"> <div align="center">Titel  </div></th> 
   <th width="91"> <div align="center">Subscribe  </div></th> 
   <th width="91"> <div align="center">Unsubscribe  </div></th> 
</tr>

<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?>
<tr>  
    <td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
    <td><div align="center"><?=$objResult1["Titel"];?> </div></td>  
    <td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="10"> </div></td>  
    <td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="90"> </div></td> 
</tr>
<?php endfor; ?>

</table>  

クエリと変数は次のようになります。

$strSQL1    = "SELECT ID, Titel FROM Mail"; 
$strSQL2    = "SELECT * FROM Subscriptions,
(SELECT MAX(ID) as ids, Mail_ID FROM Subscriptions
    WHERE Klant_ID = '".$_GET["ID"]."' GROUP BY Mail_ID) table2
WHERE ID=table2.ids";  
$objQuery1  = mysql_query($strSQL1);
$objQuery2     = mysql_query($strSQL2); 

これらの 2 つのテーブルをマージして、次のようにします。

ここに画像の説明を入力

そこにある2つのループのために、私が試みるすべてがすべてを混同するため、これを機能させることができません。皆さんが私の質問を理解してくれることを願っています。すべてを明確にするために、できるだけ多くの情報と写真を追加しました^^それでも質問がある場合は、コメントとして質問してください。どんな助けでも大歓迎です!

4

3 に答える 3

0

これがあなたにとって完全な解決策であるかどうかはわかりませんが、それは出発点であるはずです:

SELECT Mail.ID Mail_ID, Mail.Titel, Subscriptions.status, Subscriptions.Datum, Subscriptions.Subscribe, Subscriptions.Unsubscribe
FROM Mail left join Subscriptions on Mail.ID = Subscriptions.Mail_ID
于 2013-03-21T14:18:40.320 に答える
0

SQL結合を使用して、すべてのデータを返す単一のSQLクエリを作成します。次に、ループの1つだけを使用します。

SQLは次のようになります。

SELECT ID, Titel, Subscriptions.* FROM Mail INNER JOIN Subscriptions ON Subscriptions.ID = Mail.ID ...
于 2013-03-21T14:19:27.980 に答える
0

他の人がすでに言ったように、結合を使用する必要があります。2つ以上のテーブルを結合することにより、複数のwhileループを使用する必要がなくなり、コードがよりクリーンになります

SELECT 
  Mail.ID Mail_ID,
  Mail.Titel,
  Subscriptions.status,
  Subscriptions.Datum,
  Subscriptions.Subscribe,
  Subscriptions.Unsubscribe 
FROM
  Mail 
LEFT JOIN Subscriptions 
ON (Subscriptions.Mail_ID = Mail.ID)

これらの結合タイプのいずれかが機能するはずです: LEFT JOIN または INNER JOIN.

HTML は次のようになります。

<table width="600" border="1">  
<tr>   
   <th width="91"> <div align="center">Mail_ID  </div></th> 
   <th width="91"> <div align="center">Status  </div></th> 
   <th width="91"> <div align="center">Datum  </div></th> 
   <th width="91"> <div align="center">Titel  </div></th> 
   <th width="91"> <div align="center">Subscribe  </div></th> 
   <th width="91"> <div align="center">Unsubscribe  </div></th> 
</tr>
<?php 
while ($objResult2 = mysql_fetch_array($objQuery2))  
{
?> 
<tr>   
   <td><div align="center"><?=$objResult2["Mail_ID"];?> </div></td> 
   <td><div align="center"><?=$objResult2["Status"];?> </div></td> 
   <td><div align="center"><?=$objResult2["Datum"];?> </div></td>  
   <td><div align="center"><?=$objResult1["Mail_ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["Mail_ID"];?>"> </div></td>
   <td><div align="center"><?=$objResult1["Titel"];?> </div></td>  
   <td><div align="center"><input type="radio" name="sub[<?=$objResult1["Subscriptions_ID"];?>]" value="10"> </div></td>  
   <td><div align="center"><input type="radio" name="sub[<?=$objResult1["Subscriptions_ID"];?>]" value="90"> </div></td> 
</tr>
<?php
}
?>
</table>  

LEFT JOIN を使用するとすべてのメール行が表示されますが、INNER JOIN を使用すると、サブスクリプション行が関連付けられているメール行のみが表示されます

于 2013-03-21T14:21:09.363 に答える