如何连接两个表以查看其中任何一个表中是否存在值


How do I connect two tables to see if a value exist in any of the two

我在将以下查询连接在一起时遇到问题,因此它的工作效率更高。有人能告诉我如何将这两个查询连接起来,使其成为唯一的查询吗?

$rs_duplicate = mysql_query("select count(*) as total 
                             from advertisers_account
                             where user_email='$user_email' ") or die(mysql_error());
list($total) = mysql_fetch_row($rs_duplicate);
    }
$rs_duplicate_pub = mysql_query("select count(*) as total 
                                 from publishers_account
                                 where user_email='$user_email' ") or die(mysql_error());
list($totalpub) = mysql_fetch_row($rs_duplicate_pub);

if ($totalpub ||  $total  > 0)
{
    echo "Not Available  ";
} else {
    echo "Available";
}

使用UNION:

SELECT 'advertisers' AS which, count(*) AS total
FROM advertisers_account
WHERE user_email = '$user_email'
UNION
SELECT 'publishers' AS which, count(*) AS total
FROM publishers_account
WHERE user_email = '$user_email'

这个查询将返回两行,您可以使用which列来判断它是广告商还是出版商。

这就是你可以做到的。你需要使用联接,但你应该确保查询中的任何变量都不直接来自外部用户,比如表单提交。这将为您打开SQL注入的大门。请改用"准备好的语句"。

select count(*) as total from publishers_account INNER JOIN advertisers_account ON advertisers_account.user_email = publishers_account.user_email WHERE user_email='$user_email' 

响应:有人能告诉我如何将这两个查询连接起来,使其成为唯一的查询吗?

为什么不:

Select 
(select count(*) as total from advertisers_account where user_email='$user_email') +
(select count(*) as total from publishers_account where user_email='$user_email') as sumofCount
SELECT count(advertisers_account.id)
FROM publishers_account
LEFT JOIN advertisers_account ON publisher_account.email = advertisers_account.email
WHERE publisher_account.email = '$user_email';

如果计数大于零,则该电子邮件在两个表中至少存在一次。如果它只存在于左表(发布者)中,那么计数器将为零。如果它根本不存在于左表中,那么即使它确实存在于右表(广告商)

中,也不会得到任何行