Как составить такой запрос

Тема в разделе "Базы данных", создана пользователем avgaz, 20 янв 2013.

Модераторы: latteo
  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    В базе Mysql имеются 2 таблицы
    Первая таблица Регионы
    Вторая таблица данных пользователей в которой хранятся id регионов которые они выбрали
    Вопрос как составить запрос на вывод только тех регионов которые выбирали пользователи с учетом того что к примеру 10 пользователей могли выбрать одинаковый регион, а этот регион должен вывестись один раз а не 10?
     
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    SELECT * FROM REGIONS
    WHERE ID IN (SELECT DISTINCT(REGION_ID) FROM USERS)
     
    avgaz нравится это.
  3. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Спасибо то что нужно, если не затруднит не подскажите как ещё вывести число выбравших этот регион, то есть у меня вывелся список регионов которые выберали как писал выше кто к примеру пользователи выберали регион 10 другой два раза как вывести число это около региона.
     
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    примерно так
    SELECT COUNT(*), Region_Id FROM USERS
    GROUP BY Region_Id
     
  5. unknown34

    unknown34 Создатель

    Регистр.:
    8 сен 2008
    Сообщения:
    19
    Симпатии:
    2
    вложенные подзапросы зло.
    select region.id, region.otherdata, count(user.id) as count_user
    from region
    inner join user on user.id_region=region.id
    group by region.id