Как можно извлечь уникальные IP-адреса или посчитать их количество из сопряженных таблиц?

Как я могу составить запрос, чтобы получить уникальные IP-адреса в каждом подразделении и их количество, используя следующие три таблицы: пользователи (users), подразделения (podrazd) и IP-адреса пользователей (usersip)? Мой текущий запрос, который не работает, выглядит следующим образом:

```sql
SELECT DISTINCT ip.ip
FROM
(
SELECT p.txt, ip.ip
FROM users u
LEFT JOIN usersip ip
  ON u.idAccess = ip.idUsers
LEFT JOIN podrazd p
  ON u.podrazd = p.idAccess
)
```
  • 17 декабря 2023 г. 15:37
Ответы на вопрос 2
В вашем текущем запросе пропущена группировка и подсчет количества уникальных IP-адресов. Для достижения вашей цели можно использовать функцию COUNT() и группировку по подразделениям и IP-адресам. Вот как вы можете изменить свой запрос:

```sql
SELECT p.txt AS podrazd, COUNT(DISTINCT ip.ip) AS count
FROM users u
LEFT JOIN usersip ip
  ON u.idAccess = ip.idUsers
LEFT JOIN podrazd p
  ON u.podrazd = p.idAccess
GROUP BY p.txt
```

В этом запросе мы добавили выражение COUNT(DISTINCT ip.ip) для подсчета уникальных IP-адресов в каждом подразделении. Затем мы добавили выражение GROUP BY p.txt, чтобы сгруппировать результаты по подразделениям.
Почему вы используете idAccess для джойна? <br/> <br/> Количество уникальных ip <br/> <br/> Список ip <br/> <br/> <a href="https://sqlize.online/sql/mysql57/80bef173096b6d11cd3d985fd75f9dc9/" rel="nofollow">Проверить</a>
Похожие вопросы