Вытащите последнюю версию контента для всех языков в системе ревизий - PullRequest
2 голосов
/ 28 июня 2011

У меня есть база данных MySQL, в которой есть три таблицы базы данных: news_articles, languages и news_articles_languages.

  • Таблица languages содержит записи для каждого языка, поддерживаемого системой
  • Таблица news_articles содержит общую информацию о новостной статье, такую ​​как идентификатор и прикрепленное изображение
  • Таблица news_articles_languages содержит локализованную информацию о новостной статье, а также хранит редакции.

Структура таблицы news_articles_languages выглядит следующим образом:

id            INT       AUTO_INCREMENT
article_id    INT
language_id   INT
title         VARCHAR
friendly_name VARCHAR
content       TEXT
created       TIMESTAMP

Когда новостная статья сохраняется, переводы вставляются в эту таблицу с новым столбцом created, поэтому я могу легко запросить предыдущие редакции.

Однако я хочу иметь возможность извлекать все последние ревизии на основе идентификатора статьи. Какой будет запрос для этого? Я пробовал различные комбинации GROUP BY и DISTINCT, но они дают только один результат на одном языке; Я хочу всех языков для данной статьи.

1 Ответ

0 голосов
/ 28 июня 2011

Если ревизия с самым высоким идентификатором всегда самая последняя, ​​то, по-моему, должно работать следующее.Если вы не можете зависеть от этого и вам нужно использовать «создан», то я не уверен!

SELECT * FROM `news_articles_languages` WHERE id IN(SELECT MAX(id) FROM `news_articles_languages` WHERE article_id = 1 GROUP BY language_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...