@yura_born

Как выбрать уникальные ip адреса или их количество из связанных таблиц?

У меня 3 таблицы:
1. таблица
TABLE usersr.users (
  id int(11) NOT NULL AUTO_INCREMENT,
  date_start datetime DEFAULT NULL,
  osnovanie varchar(255) DEFAULT NULL,
  fam varchar(255) DEFAULT NULL,
  name varchar(50) DEFAULT NULL,
  otchestvo varchar(255) DEFAULT NULL,
  podrazd int(11) DEFAULT NULL,
  sluzhba int(11) DEFAULT NULL,
  dolzhnost varchar(255) DEFAULT NULL,
  phone varchar(255) DEFAULT NULL,
  ip_adress varchar(255) DEFAULT NULL,
  ip_adress_btk varchar(255) DEFAULT NULL,
  login varchar(255) DEFAULT NULL,
  pass varchar(255) DEFAULT NULL,
  date_end datetime DEFAULT NULL,
  arhive tinyint(1) DEFAULT NULL,
  primechanie text DEFAULT NULL,
  otkritDostupUIT tinyint(1) DEFAULT NULL,
  uchetkaBezIP tinyint(1) DEFAULT NULL,
  idAccess int(11) DEFAULT NULL,
  idKip int(11) DEFAULT NULL,
  PRIMARY KEY (id)
)


2. таблица
TABLE podrazd (
  id int(11) NOT NULL AUTO_INCREMENT,
  id_podrazd int(20) DEFAULT NULL,
  txt varchar(255) DEFAULT NULL,
  idAccess int(11) DEFAULT NULL,
  PRIMARY KEY (id)
)


3. таблица
TABLE usersr.usersip (
  id int(11) NOT NULL AUTO_INCREMENT,
  idUsers int(11) DEFAULT NULL,
  ip varchar(255) DEFAULT NULL,
  btk tinyint(4) DEFAULT NULL,
  ipNAT varchar(255) DEFAULT NULL,
  UNIQUE INDEX id (id)
)


Как мне получить уникальные ip адреса в подразделениях или их количество, написал что-то вроде этого, но ничего не получается:
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
)
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Почему вы используете idAccess для джойна?

Количество уникальных ip
SELECT p.txt, count(distinct ip.ip)
FROM users u
LEFT JOIN usersip ip
  ON u.id = ip.idUsers
LEFT JOIN podrazd p
  ON u.podrazd = p.id
group by p.txt
order by p.txt;


Список ip
SELECT p.txt, ip.ip
FROM users u
LEFT JOIN usersip ip
  ON u.id = ip.idUsers
LEFT JOIN podrazd p
  ON u.podrazd = p.id
group by p.txt, ip.ip
order by p.txt;


Проверить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы