Как выбрать количество входов в систему по запросу MySQL? - PullRequest
0 голосов
/ 11 марта 2020

Я хотел бы выбрать все события входа в систему, а также количество входов в систему под одним указанным c IP-адресом по запросу MySQL.

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

SELECT `pp_loginevent`.`loginevent_user`,   
       `pp_loginevent`.`loginevent_creationdate`, 
       `pp_loginevent`.`loginevent_ip`, 
       `pp_user`.`user_id`, 
       `pp_user`.`user_name`, 
       `pp_user`.`user_rights`, 
       `pp_user`.`user_active`, 
       `pp_license`.`license_name` 

   (SELECT COUNT(1) 
   FROM `pp_loginevent` 
   WHERE `loginevent_ip` = `pp_loginevent`.`loginevent_ip`
   ) AS `pp_loginevent`.`number_of_logins`

FROM `pp_loginevent`
    LEFT JOIN `pp_user` 
        ON `pp_loginevent`.`loginevent_user` = `pp_user`.`user_id
    LEFT JOIN `pp_license` 
        ON `pp_loginevent`.`loginevent_license` = `pp_license`.`license_id`

WHERE `loginevent_creationdate` LIKE '2019-%' 
       AND `user_rights` <= '6' 
GROUP BY `loginevent_ip` 
ORDER BY `loginevent_creationdate` DESC

Я пытаюсь выбрать «столбец» number_of_logins, который должен содержать количество логинов, сделанных с указанного c IP-адреса.

1 Ответ

0 голосов
/ 11 марта 2020

Здесь вы не видите ничего неправильного:

`pp_license`.`license_name` 

(SELECT COUNT(1) FROM `pp_loginevent` WHERE `loginevent_ip` = `pp_loginevent`.`loginevent_ip`) AS `pp_loginevent`.`number_of_logins`

?

Хотя это не решит всех проблем с этим запросом, я думаю, что написание запроса таким способом делает одна очевидная ошибка:

SELECT e.loginevent_user
     , e.loginevent_creationdate
     , e.loginevent_ip
     , u.user_id
     , u.user_name
     , u.user_rights
     , u.user_active
     , l.license_name 
       (SELECT COUNT(1) 
          FROM pp_loginevent 
         WHERE loginevent_ip = pp_loginevent.loginevent_ip) pp_loginevent.number_of_logins

  FROM pp_loginevent e
  JOIN pp_user u
    ON u.user_id = e.loginevent_user 
  LEFT 
  JOIN pp_license l
    ON l.license_id = e.loginevent_license 
 WHERE e.loginevent_creationdate >= '2019-01-01' 
   AND e.loginevent_creationdate < '2020-01-01' 
   AND user_rights <= 6 
 GROUP 
    BY loginevent_ip 
 ORDER 
    BY loginevent_creationdate DESC 

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

Соответственно, см .: Почему я должен предоставить MCRE для того, что мне кажется очень простым SQL запросом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...