drawmack ... you're right ... that query won't work ... but it won't give count(distinct(a.email)) * count(distinct(b.email) ... it'll generate an error, and even when you fix the error, it'll never return a COUNT(). Should brush up on their SQL syntax? 😉
Also the solution you gave is incomplete; while it gives all emails from members, it only gives emails from users that are not in members - which could be done more easily by a simple LEFT JOIN query and checking for NULL values. But paulg said he also wants emails from users which are not in users ...
However ...
paulg, drawmack is right, you'll have to use two queries.
I personally think that the most efficient way to do it is with two JOIN queries.
SELECT a.email AS userEmail, b.email as memberEmail
FROM users.email a LEFT JOIN DB2.email b
ON a.email = b.email;
This query will return a result set with some NULL values in the second column (memberEmail) - these are the rows that are in users, but not in members. To find the ones that are in members, but not in users, replace the LEFT JOIN with a RIGHT JOIN (this is easier than switching table.columns).
If you want all three pieces of data on one page, you'll either need to run one query, then use mysql_free_results() as drawmack pointed out, in which case you can use the same result identifier (ie., $query = mysql_query($sql); ) then run the other, or you could also just use two result sets:
$query1 = 'SELECT a.email AS userEmail, b.email AS memberEmail FROM users.email a LEFT JOIN DB2.email b ON a.email = b.email';
$query2 = 'SELECT a.email AS userEmail, b.email AS memberEmail FROM users.email a RIGHT JOIN DB2.email b ON a.email = b.email';
$result1 = msyql_query($query1);
$result2 = mysql_query($query2);