Добрый день!
Подскажите, пожалуйста, как можно поправить запрос:
SELECT MAX(doc1.id), MAX(doc1.version), doc2.id
FROM doc1
JOIN doc2 ON doc1.id=doc2.id
WHERE doc2.id is NULL OR doc2.history = ''
GROUP BY doc1.date, doc1.title;
Нужно, чтобы выбранный doc2.id соответствовал MAX(doc1.id).
В каждой группе соответственно MAX(doc1.id) соответствует MAX(doc1.version), тут все получается. Но doc2.id выбирает любой, а нужно тот, который MAX(doc1.id).
Как быть?
Сначала сгруппируйте данные, потом соединяйте с doc2. Примерно это будет выглядеть так:
SELECT doc1Groupped.maxId, doc1Groupped.maxVersion, doc2.id
FROM (
SELECT MAX(doc1.id) as maxId, MAX(doc1.version) as maxVersion
FROM doc1
GROUP BY doc1.date, doc1.title
) as doc1Groupped
JOIN doc2 ON doc1Groupped.maxId = doc2.id
WHERE doc2.id is NULL OR doc2.history = ''
Дмитрий, спасибо, это получилось. Но есть теперь нюанс: при JOIN он не выдает результата, если doc1.id существует, а doc2.id нет, а должен. А если сделать left join, то тогда выдает все версии и id, а не максимальные. Можете подсказать, как это решить?