Список имен пользователей с пятью различными значениями (на основе $_GET) в другом столбце

#sql

Вопрос:

У меня есть проект, в котором цель для имен пользователей-посетить все 5 мест в городе. Есть несколько городов. Они также могут посещать одно место в городе несколько раз (отсюда одинаковые строки).

У меня есть таблица, где в одном столбце указано имя пользователя, а в другом-местоположение, которое они посетили:

Имя пользователя Город
Есиул Чикаго 1
Есиул Чикаго 2
Есиул Чикаго 1
Есиул Чикаго 3
Есиул Чикаго 5
Другой Чикаго 5
Есиул Чикаго 4
Есиул Чикаго 1
Есиул Атланта 1
Есиул Атланта 3
Есиул Атланта 2
Другой Атланта 2
Другой Атланта 1
Другой Атланта 1
Другой Атланта 3
Другой Атланта 5
Другой Атланта 4

Я хотел бы вывести список имен пользователей, которые посетили все пять разных точек в определенном городе (я получаю город из $_GET[«город»]).

Я изучаю SQL, борюсь с этим запросом и был бы очень признателен, если бы кто-нибудь мог направить меня в правильном направлении.

Большое вам спасибо!

Ответ №1:

Вы используете WHERE фильтр для нужного вам города. Затем вы используете агрегацию и фильтрацию с помощью count(distinct) . Учитывая данные, которые вы показали:

 select username
from t
where city like 'Chicago %'
group by username
having count(distinct city) = 5;
 

Я бы предупредил, что city колонка на самом деле не «город», а «местоположение». Исходя из вопроса, я бы ожидал, что в таблице будет по крайней мере три столбца:

  • Какой-то идентификатор пользователя
  • Город (например, 'Chicago' и 'Atlanta' )
  • Расположение

Ответ №2:

Это именно то, что я искал! Большое вам спасибо!

О, и там есть две колонки. У одного есть местоположение (город номер), а другой предназначен для имен пользователей.

Еще раз спасибо!