2013-03-11 6 views
0

У меня есть строка mysql, которая я пытаюсь получить определенное количество адресов электронной почты, сгруппированных по провинции. И это, кажется, дает странные ценности.MySQL странные вещи, происходящие

Если я делаю следующее (сосчитать различные адреса электронной почты для провинции) для каждой провинции

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
AND province='ns' 

и добавить их все. Я получаю число, которое примерно 200 больше, чем если бы я просто

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 

, который также соответствует

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
AND province IN('ns','nb','pei') 

, но не соответствует

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 
GROUP BY province 

если я

SELECT COUNT(DISTINCT(email_address)) as COUNT 
FROM entries 
WHERE subscribe='1' 

Итак, 2-й и 4-й матч, а 1 и 3 и 5 - совпадают. Но 2-й/4-й - 200 больше, чем 1-й/3-й/5-й.

Все, что я хочу, это количество различных адресов электронной почты, в которых подписано 1 группа по провинции. И это кажется невозможным.

+1

то же самое электронная почта зарегистрирована в нескольких провинциях? вы не можете сравнивать разные версии вместе, так как вы меняете фундамент, на котором основаны подсчеты. с + без группировки действительно сильно меняет условия. –

ответ

0

Возможно ли, что адрес электронной почты привязан к нескольким провинциям? Вы можете сделать запрос, чтобы проверить это

SELECT email_address, count(distinct province) 
FROM entries 
WHERE subscribe = '1' 
GROUP BY email_address HAVING count(distinct province) > 1 

Это может быть где ваше расхождение приходит в

В любом случае, этот запрос будет дать вам то, что вы ищете

SELECT province, COUNT(DISTINCT email_address) as COUNT 
FROM entries 
WHERE subscribe = '1' 
GROUP BY province 
ORDER BY province 
+0

Это возвращает число, которое на 200 выше, если я просто сделаю отдельный адрес электронной почты (# 5). – Steven

+0

@Steven Я обновил свой ответ для другой возможности (и перенес свой первоначальный ответ на дно) –

+0

Кажется, что это проблема. – Steven

Смежные вопросы