我有2个表格和翻译
表格帖子
翻译
此数据库将提供多种语言。 获得连续所有可用语言的帖子的最佳查询是什么。
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?
答案 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'];
}