在两个表中查询多个语言内容

时间:2012-04-19 03:21:15

标签: php mysql

我有2个表格和翻译

表格帖子

  1. post_id
  2. POST_CONTENT
  3. 翻译

    1. POST_ID
    2. 语言
    3. 含量
    4. 此数据库将提供多种语言。 获得连续所有可用语言的帖子的最佳查询是什么。

      input
      post_id = 2
      
      output 
      ->single row with this fields
      
      post_id = 2
      post_content = 'lorem ipsum'
      post_content_en = 'english lorem ipsum'
      post_content_jp = 'japanese lorem ipsum'
      post_content_...= 'bla..bla..bla..' //the post_content_xx is language international code
      

      我尝试使用group_concat

      SELECT a.post_id,GROUP_CONCAT(b.language,'--lang_content_separator--',b.content SEPARATOR '---main_separator---') AS all_languages
      FROM posts a 
      LEFT JOIN translation b ON a.post_id = b.post_id 
      WHERE a.post_id = 2;
      

      以上查询正在运行,但我不喜欢它,因为我们必须设置group_concat_max_len。

      是否有任何技巧或替代查询来替换group_concat?

1 个答案:

答案 0 :(得分:0)

我确信我的解决方案可以改进,但另一种方法是在PHP内部合并数组。就SQL查询而言,您可以运行查询。您的查询中的联接似乎是不必要的。

SELECT post_id, language, content FROM translation WHERE post_id = 2

然后,您可以使用以下代码检索并格式化数据。

$result = mysql_query($query);

$post = array();
while ($row = mysql_fetch_array($result)) {
    $index = "post_content_" . $row['language'];
    $post['post_id'] = $row['post_id'];
    $post[$index] = $row['content'];
}