Составить правильный MySQL-запрос

elitedesign
На сайте с 25.10.2012
Offline
69
580

Здравствуйте. Помогите пожалуйста составить правильный MySQL-запрос.

У меня есть таблица пользователей.

Поля: id, email, password, session

Мне необходимо вывести email-ы всех пользователей, у которых значение session совпадало бы с записью session у других пользователей.

Подскажите пожалуйста правильный MySQL-запрос, а то уже бьюсь день, попутно ища в гуглояндексе решение, и пока выходит не то что нужно.

Заранее спасибо за внимание к моему вопросу.

ДП
На сайте с 23.11.2009
Offline
203
#1

SELECT GROUP_CONCAT(email SEPARATOR ' ') FROM users GROUP BY session - выведет emailы, которые имеют одинаковое значение session

Gerga
На сайте с 02.08.2015
Offline
94
#2

elitedesign, тут /ru/forum/914363 думаю лучше решили. В вашем случае так можно:


SELECT email, count(id) AS count_s FROM table_name GROUP BY session HAVING count_s > 1

В count_s ляжет количество значений с одинаковым session

elitedesign
На сайте с 25.10.2012
Offline
69
#3

Спасибо. Пошел по первому предложенному варианту.

$sql_finduser="SELECT session, GROUP_CONCAT(email SEPARATOR ' ') as email FROM users GROUP BY session";
$result_finduser=$mysqli->query($sql_finduser);
if (mysqli_num_rows($result_finduser) > 0)
{
$res_finduser=mysqli_fetch_array($result_finduser);
echo $res_finduser['email'];
}

В результате, если есть совпадения в поле session у некоторых пользователей, то email этих пользователей как и было задумано выводятся успешно. Но вот и баг: Если нет совпадений вообще, то все равно выводится, email последнего зарегенного пользователя.

Надеюсь не очень тупо все объяснил. Возможно Вы увидите где я допустил ошибку.

Gerga
На сайте с 02.08.2015
Offline
94
#4

elitedesign,


SELECT GROUP_CONCAT(email SEPARATOR ' ') as email FROM users GROUP BY session HAVING count(id) > 1
orphelin
На сайте с 02.07.2006
Offline
261
#5

вопрос не конкретно данного случая, а просто про использование HAVING. на самом деле не желательно его использовать, если можно обойтись?

elitedesign
На сайте с 25.10.2012
Offline
69
#6

Всем большое спасибо. Вопрос успешно закрыт, с Вашей помощью.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий