MySQL PDO - последняя строка для таблицы, сгруппированной с объединениями

Побегите двоеточие как {{ ":" }}:

- 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'
0
задан Bill Karwin 16 January 2019 в 00:37
поделиться

1 ответ

Одним из решений является использование коррелированного подзапроса. Принцип заключается в том, что внешний запрос не агрегируется, но имеет условие в предложении 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
0
ответ дан GMB 16 January 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: