Я выполнил этот запрос:
Когда я развернул код, я понял, что он не дал мне нужного результата. ЧТО Я ХОЧУ ДОСТИГНУТЬ: ПОЛУЧИТЬ пользователей, КОТОРЫЕ ЯВЛЯЮТСЯ электронными письмами, в ПОЛЬЗОВАТЕЛЬСКИХ И ПОЛЬЗОВАТЕЛЬСКИХ УСЛОВИЯХ В УСЛОВИЯХ, КОТОРЫЕ ЕГО ПОЧТОВА ЯВЛЯЮТСЯ В ИСПОЛЬЗОВАНИИ С refcomfirm = ‘2’ и НА ОСНОВАНИЯХ, КОТОРЫЕ ОНА ИМЕЕТСЯ В studentusers.refemail <3 или studentusers.refemail = » Т.е. это не происходит вообще. ПОЖАЛУЙСТА ПОМОГИ
SELECT studentusers.refemail, COUNT( studentusers.refemail )
FROM studentusers
LEFT JOIN useractivation ON studentusers.email = useractivation.email
WHERE useractivation.refcomfirm = '2'
GROUP BY studentusers.refemail
HAVING COUNT( studentusers.refemail ) <3
LIMIT 0 , 500
У меня есть стол studentusers (вмещает всех пользователей)
Еще одно использование-активация (содержит все варианты использования)
Общей колонкой для обоих является электронная почта
Я хочу отображать только электронные письма, которые появляются в столбце studentusers.refemail менее 3 раз, и для useractivation.refcomfirm должно быть установлено значение 2
Но если вы посмотрите на изображение ниже, вы заметите, что электронная почта [email protected] появляется.
Когда я запустил поиск по адресу [email protected], он возвращает 3 строки, что означает, что он появляется 3 раза.
Посмотреть изображение
Вернуть три строки
Я только хочу отображать электронные письма, которые появляются в обеих таблицах, но появляются в refemail меньше, чем dan три раза, а в таблице useractivation установлено значение refcomfirm, равное 2
Я надеюсь, что это достаточно ясно. спасибо за привет
SELECT a.refemail, COUNT( * )
FROM studentusers a
JOIN useractivation b ON a.refemail = b.email
WHERE b.refcomfirm = '2'
AND refemail != '[email protected]'
AND refemail != '[email protected]'
AND refemail != '[email protected]'
AND refemail != '[email protected]'
GROUP BY a.refemail
HAVING COUNT( * ) <3
ORDER BY a.id ASC
LIMIT 0 , 500
Вы хотите включить в таблицу только электронные письма, которые не встречаются 3 или более раз, даже когда эти случаи не имеют refconfirm=2
. Но в текущем запросе вы учитываете только те, которые соответствуют этому условию.
Поэтому измените ваш запрос, чтобы переместить это условие в having
пункт, в котором вам потребуется только хотя бы одна из подсчитанных записей для выполнения этого конкретного условия:
SELECT studentusers.refemail, COUNT( studentusers.refemail )
FROM studentusers
LEFT JOIN useractivation ON studentusers.email = useractivation.email
GROUP BY studentusers.refemail
HAVING COUNT( studentusers.refemail ) < 3
AND COUNT( CASE WHEN useractivation.refcomfirm = '2' THEN 1 END ) > 0
LIMIT 0, 500
Смотрите, это работает на sqlfiddle.com