Я написал следующий запрос MySQL, который успешно возвращает список тем и самое последнее значение на конкретную дату:
SELECT t1.subject, t1.judgement AS judgement1, t1.assessor AS assessor1, t1.dateAchieved AS dateAchieved1
FROM 'wwlpredictedoveralljudgements' t1
WHERE pupilID='115137218853' && t1.dateAchieved = (
SELECT MAX(t2.dateAchieved)
FROM 'wwlpredictedoveralljudgements' t2
WHERE t1.pupilID = t2.pupilID && t1.subject=t2.subject && dateAchieved<='2018-01-25 00:00:00')
Он работает точно так, как мне нужно. То, что я хочу сделать, это иметь еще 3 столбца: judment2, evaluationor2, dateAchieved2 со второй указанной даты. Я читал и пробовал различные объединения и подзапросы, но мне не удалось получить рабочий результат.
Результат выглядит следующим образом:
Мне нужны дополнительные 3 столбца, но со второй отключенной датой во втором выборе MAX. Есть ли у кого-нибудь идеи, как это сделать?
решена. Решение для кого-то другого с аналогичной проблемой... осталось присоединиться к той же таблице со вторым условием WHERE.
SELECT t1.pupilID, t1.subject, t1.judgement AS judgement1, t1.assessor AS assessor1, t1.dateAchieved AS dateAchieved1 , t3.judgement AS judgement2, t3.assessor AS assessor2, t3.dateAchieved AS dateAchieved2
FROM 'wwlpredictedoveralljudgements' t1
LEFT JOIN wwlpredictedoveralljudgements t3 ON t3.pupilID=t1.pupilID && t3.subject=t1.subject
WHERE t1.pupilID='084601821376' && t1.dateAchieved = (
SELECT MAX(t2.dateAchieved) FROM 'wwlpredictedoveralljudgements' t2
WHERE t1.pupilID = t2.pupilID && t1.subject=t2.subject && dateAchieved<='2018-01-25 00:00:00') && t3.dateAchieved = (
SELECT MAX(t4.dateAchieved)
FROM 'wwlpredictedoveralljudgements' t4 WHERE t3.pupilID = t4.pupilID && t3.subject=t4.subject && dateAchieved<='2018-03-25 00:00:00')