【问题标题】:Pull latest version of content for all languages in a revisions system在修订系统中提取所有语言的最新版本内容
【发布时间】:2011-06-28 10:41:09
【问题描述】:

我有一个 MySQL 数据库,其中包含三个数据库表:news_articleslanguagesnews_articles_languages

  • languages 表保存系统支持的每种语言的记录
  • news_articles 表包含有关新闻文章的一般信息,例如 ID 和附加图片
  • 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 列,所以我可以很容易地查询以前的修订。

但是,我希望能够根据文章 ID 提取所有最新修订。对此的查询是什么?我尝试了GROUP BYDISTINCT 的各种组合,但这些只给出一种语言的结果;我想要给定文章的所有语言。

【问题讨论】:

    标签: php mysql version-control localization internationalization


    【解决方案1】:

    如果具有最高 id 的修订始终是最新的,那么我认为以下应该可以工作。如果你不能依赖它并且需要使用'created',那么我不确定!

    SELECT * FROM `news_articles_languages` WHERE id IN(SELECT MAX(id) FROM `news_articles_languages` WHERE article_id = 1 GROUP BY language_id)
    

    【讨论】:

    • 是的,最高的ID应该是最新的,但你永远不能太确定!过去,我在具有 auto_increment 列的 MySQL 表上发生了一些有趣的事情......
    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多