Таблица 1
ID | Name
1 Brain
2 Amy
Таблица 2:
ID | WorkDay | MissionCode
1 2019-01-01 2360
1 2019-02-01 2470
2 2019-01-01 4470
2 2019-02-01 7210
Я хочу добиться того, чтобы я хотел получить все поля таблицы 1 и левое соединение в таблице 2, но только самые последние значения WorkDay, например:
Ожидаемый результат
ID | Name | WorkDay | MissionCode
1 Brain 2019-02-01 2470
2 Amy 2019-02-01 7210
Что я пробовал до сих пор:
SELECT
table1.*, t2.WorkDay, t2.MissionCode
FROM
table1
LEFT JOIN
(SELECT
*
FROM
table2
ORDER BY
WorkDay DESC
LIMIT 0,1) AS t2
ON
t2.id = table1.id
Но он возвращает значения NULL из таблицы2, например:
ID | Name | WorkDay | MissionCode
1 Brain NULL NULL
2 Amy NULL NULL
Я протестировал тот же запрос, добавив дополнительное предложение WHERE к команде select внутреннего соединения, и он успешно завершился.
SELECT
table1.*, t2.WorkDay, t2.MissionCode
FROM
table1
LEFT JOIN
(SELECT
*
FROM
table2
**WHERE id = 1**
ORDER BY
WorkDay DESC
LIMIT 0,1) AS t2
ON
t2.id = table1.id
И он возвращается нормально, для первого ряда курса:
ID | Name | WorkDay | MissionCode
1 Brain 2019-02-01 2470
2 Amy NULL NULL
Но я не могу использовать
WHERE id = table1.id
потому что MySQL говорит
Unknown column 'table1.id' in 'where clause'
Итак, как правильно это сделать?