Извлечение последней версии статей из результатов предыдущего запроса

is возвращает true только в том случае, если они фактически являются одним и тем же объектом. Если бы они были одинаковыми, изменение в одном было бы также показано в другом. Вот пример разницы.

>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> print x is y
False
>>> z = y
>>> print y is z
True
>>> print x is z
False
>>> y[0] = 5
>>> print z
[5, 2, 3]
0
задан nSv23 13 July 2018 в 15:09
поделиться

1 ответ

Добавьте соединение к подзапросу, который находит самую последнюю версию для каждой статьи:

SELECT e_c.*, c.name, j1.status, j1.version, j1.articleId, j1.title
FROM assetcategory AS c
INNER JOIN assetentries_assetcategories AS e_c 
    ON c.categoryId = e_c.categoryId AND c.name = 'news'
INNER JOIN assetentry AS e
    ON e.entryId = e_c.entryId
INNER JOIN journalarticle AS j1
    ON j1.resourcePrimKey = e.classPK AND
       e.classNameId = (SELECT classNameId FROM classname_
                   WHERE value = 'com.liferay.portlet.journal.model.JournalArticle') AND
       j.companyId = e.companyId
INNER JOIN
(
    SELECT articleId, MAX(version) AS max_version
    FROM journalarticle
    WHERE status = 0
    GROUP BY articleId
) j2
    ON j1.articleId = j2.articleId AND j1.version = j2.max_version;

Основная идея объединения в подзапрос, псевдоним, как j2 выше, заключается в том, что он ограничивает результат установленный только для самой последней версии каждой статьи. Нам необязательно изменять оставшуюся часть запроса.

2
ответ дан Tim Biegeleisen 17 August 2018 в 12:32
поделиться
  • 1
    Чувак благодарит много людей. Я провел целый день на этом, и вы дали мне через 5 минут. Как стать таким экспертом, как вы? – nSv23 13 July 2018 в 15:21
  • 2
    Игнорируйте своих друзей и родственников и вместо этого тратите время на ответы на вопросы SQL о переполнении стека :-) ... Кстати, вы можете принять этот ответ, отметив его правильной зеленой галочкой слева. – Tim Biegeleisen 13 July 2018 в 15:22
  • 3
    где я даже начинаю. Я знаю только самые основы. Я понял запрос, который вы дали в ответ, но я не смог его найти. – nSv23 13 July 2018 в 15:25
  • 4
    Найдите информацию о запросе, чтобы найти максимальную для каждой группы. Мой ответ - просто применение этого. – Tim Biegeleisen 13 July 2018 в 15:40
Другие вопросы по тегам:

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