Побегите двоеточие как {{ ":" }}
:
- name: set up sudo for testgroup
lineinfile: dest=/etc/sudoers line='%testgroup ALL= NOPASSWD{{ ":" }} /sbin/shutdown -r now' state=present insertafter=EOF validate='visudo -cf %s'
Одним из решений является использование коррелированного подзапроса. Принцип заключается в том, что внешний запрос не агрегируется, но имеет условие в предложении WHERE
, которое выбирает самую последнюю запись в журнале для текущего идентификатора компьютера, используя агрегированный подзапрос.
Я полагаю, что вам понадобится этот запрос (без просмотра данных примера и ожидаемого результата, хотя, возможно, он не будет точным на 100%):
SELECT
computers.computer_name,
users.username,
data_logs.window_title,
data_logs.filename,
data_logs.capture_timestamp
FROM computers
INNER JOIN users
ON users.computer_id = computers.computer_id
INNER JOIN data_logs
ON data_logs.user_id = users.user_id AND data_logs.marked != 1
WHERE
computers.account_id = :cw_account_id
AND computers.status = 1
AND data_logs.capture_timestamp = (
SELECT MAX(d.capture_timestamp)
FROM computers c
INNER JOIN users u ON u.computer_id = c.computer_id
INNER JOIN data_logs d ON d.user_id = u.user_id AND d.marked != 1
WHERE c.computer_id = computers.computer_id AND c.account_id = computers.account_id
)
ORDER BY data_logs.capture_timestamp desc