左外连接查询中的简单逻辑

时间:2012-07-26 06:53:42

标签: php mysql database

我有两个表tblSiteVisits和tblConformedList和Colums如下

tblSiteVisits

   Name   |   EmailAddress   

tblConformedList

   Name   |   EmailAddress  |  ContactNo  |  Location    |   Conform_Status

第一个表包含所有拥有SiteVisits

的人的姓名和EmailAddress

现在,在第二个表中,Conform_Status将根据站点访问时的客户端可用性设置为1或0。

如果不是,我将填写ContactNo和Location,只需用Conform_Status = 0更新表。

现在我想要的是通过关联连接中的EmailAddress和Conform_Status为0的tblConformedList中的行,从表tblSiteVisits和tblConformedList中获取人员的Name和EmailAddress。

那是为ContactNo和Location提供更新但没有给出Conform_Status的人员列表。

先谢谢

2 个答案:

答案 0 :(得分:1)

可能对你有帮助。

 select t1.* from tblSiteVisits t1 inner join tblConformedList t2 on  
 t1.EmailAddress=t2.EmailAddress where t2.Conform_Status=0

尝试并分享您的反馈意见。

答案 1 :(得分:0)

很抱歉,如果需要Conform_Status为0的行,则不需要LEFT JOIN,您需要INNER JOIN

SELECT v.* 
FROM tblSiteVisits v 
JOIN tblConformedList c 
ON v.EmailAddress = c.EmailAddress 
WHERE c.Conform_Status=0

因为c.Conform_Status=0将过滤掉不为0的所有行,包括具有NULL的行,所以tblSiteVisitstblConformedList中没有对应行的行将被过滤 - 因此只需使用INNER JOIN

如果您想要所有行的条目,那么您可以进行左连接,将where子句放在on子句中或在where子句中添加OR Conform_Status IS NULL

SELECT v.* 
FROM tblSiteVisits v 
LEFT JOIN tblConformedList c 
ON v.EmailAddress = c.EmailAddress 
AND c.Conform_Status=0

这将显示tblSiteVisits中的每一行,如果可能,还会显示tblConformedList的数据,但仅在Conform_Status实际为0时显示。