Мой запрос не работает должным образом, возникли временные проблемы с самим запросом

#mysql #mariadb

#mysql #mariadb

Вопрос:

Вот запрос, который должен дать мне результаты за последние 12 месяцев, но он дает мне полные результаты с 2014 года.

Что с ним не так?

Я попытался сделать

 (where a.time > '2020-01-01 00:00:00')
 

но я не хочу фиксированную дату в запросе.

 SET @no_of_months = 12; #change to the desired no. of months
CREATE TEMPORARY TABLE if NOT EXISTS newAuditlog
SELECT
a.id, a.user, a.action, a.project, a.info, a.TIME, a.project_ref, a.workpackage_ref, a.partner_ref
FROM auditlog a
WHERE a.time < (DATE_SUB(CURDATE(), INTERVAL @no_of_months MONTH))
GROUP BY user
ORDER BY user;
SELECT
na.id, na.user, b.roles, na.action, na.project, na.info, na.TIME, na.project_ref, na.workpackage_ref, na.partner_ref
FROM newAuditlog na
INNER JOIN(
SELECT u.id AS user_id,
u.username,
GROUP_CONCAT(r.role ORDER BY r.role SEPARATOR ', ') AS roles
FROM   user_has_role uhr
LEFT OUTER JOIN user u ON (uhr.user_id = u.id)
LEFT OUTER JOIN role r ON (uhr.role_id = r.id)
GROUP  BY uhr.user_id
ORDER  BY uhr.user_id
)b
ON SUBSTR(na.user, INSTR(na.user, "(") 1, INSTR(na.user, ")") -1- (INSTR(na.user, "("))) = b.user_id;
DROP TEMPORARY TABLE newAuditlog;
 

Ответ №1:

WHERE a.time < (DATE_SUB(CURDATE(), INTERVAL @no_of_months MONTH))

у вас есть < , но вы хотите >

Комментарии:

1. БОЖЕ! большое вам спасибо… это было правильно, на самом деле это довольно глупо, когда я пишу такой код и получаю кучу маленьких крошечных вещей, таких как знак ‘<‘ или ‘>’

2. Честно говоря, это происходит постоянно со всеми