【发布时间】:2015-03-15 23:39:05
【问题描述】:
目前我有这两个查询:
"SELECT company.id, company.name,
contact.firstname, contact.lastname,
contact.email, contact.id AS contactid
from ecampaign_lookup
LEFT JOIN company ON ecampaign_lookup.companyid=company.id
LEFT JOIN contact ON ecampaign_lookup.contactid=contact.id
WHERE ecampaign_lookup.campaignid=".$tid;
还有:
"SELECT company.id, company.name,
contact.firstname, contact.lastname,
contact.email, contact.id AS contactid
from ecampaign_lookup
LEFT JOIN company ON ecampaign_lookup.companyid=company.id
LEFT JOIN contact ON contact.companyid=company.id
WHERE ecampaign_lookup.campaignid=".$tid."
AND contact.defaultcontact=1";
不同之处在于第一个查询从“ecampaign_lookup”表返回联系人,第二个查询从“公司”表返回联系人。第二个查询还要求只选择 'contact.defaultcontact=1' 的联系人,因为每个公司有很多联系人,但每个 ecampaign_lookup 只有一个联系人。
目前我分别运行这两个查询,然后使用 for 循环来比较结果,如果一个查询返回的结果少于或多于另一个,则很容易出错:
for ($x=0;$x<count($query1_result);$x++){
if ($query1_result[$x]['contactid']!=$query2_result[$x]['contactid']){
echo $query1_result[$x]['firstname']." has been replaced by ".
$query2_result[$x]['firstname'];
}
}
如何将两个查询合并在一起以将 ecampaign_lookup.contactid 与第二个查询中的 contact.id 进行比较,并且只返回两者不匹配的结果?
【问题讨论】:
-
我问过类似的问题stackoverflow.com/a/25106708/2244570 有点不同,但你可以明白并使用它。