2013-03-21 163 views
0

我现在有2个表,看起来像这样:将两个表与来自不同查询的数据合并?

enter image description here

这些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); 

现在我想合并这两个表,看起来像这样:

enter image description here

我不能得到这个工作,因为我的一切尝试都混合起来,由于2路是在那里。我希望你们了解我的问题,我添加了尽可能多的信息和图片,使一切都清楚^^如果你仍然有问题,只要问问他们的评论。欢迎任何帮助!

+0

相关订阅行看看[SQL'JOIN'](http://en.wikipedia.org/wiki/Join_(SQL))。参见[MySQL - Join 2 tables]中的例子(http://stackoverflow.com/questions/10230438/mysql-join-2-tables) – Boaz 2013-03-21 14:17:10

回答

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 
0

使用SQL加入,形成一个返回的所有数据单个SQL查询。然后只使用其中一个循环。如其他人已经说

SELECT ID, Titel, Subscriptions.* FROM Mail INNER JOIN Subscriptions ON Subscriptions.ID = Mail.ID ... 
0

你应该使用联接:

SQL可能是这样的。通过连接两个或多个表你并不需要使用多个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只有那些邮件的行将可见这与它

相关问题