Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Подзапрос с count, правильно создать запрос - MySQ


Автор: ingener 7.5.2018, 17:12
Добрый день, помогите пожайлуста правильно составить запрос, требуется вывести пользователей с их данными по конкурсу, которые не засветились в конкурсе повторно, то есть у них только один ip в таблице конкурса - competition.

Составляю такой запрос

Код

SELECT u.user_email, c* 
FROM competition c 
LEFT JOIN users u ON c.user_id = u.user_id 
WHERE (SELECT COUNT(*) FROM competition WHERE ip = competition.ip) < 2


В ответ выводится пустой ответ, хотя должны были исключиться только двое пользователей, как правильно составить запрос с count?

Автор: Akina 7.5.2018, 18:02
Цитата(ingener @  7.5.2018,  18:12 Найти цитируемый пост)
В ответ выводится пустой ответ

Неправда. Должен выводиться Syntax Error.
Цитата(ingener @  7.5.2018,  18:12 Найти цитируемый пост)
как правильно составить запрос

Ну например:
 -для старых версий сойдёт и 
Код

select *
from users u, competition c 
where c.user_id = u.user_id
group by u.user_id 
having count(distinct c.ip) = 1

- для новых версий перечислить конкретные поля в списке вывода, кроме IP, который  обернуть в MAX(), и все поля, кроме IP, перечислить и в выражении группировки.

Автор: ingener 7.5.2018, 18:40
Спасибо, попробую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)