我有一个用于生成翻译唯一ID的表,名为translations_ids translation_id(BIGINT)
一个名为translations_entries的翻译表,具有以下结构: translation_id(BIGINT) - 在translations_ids中的唯一translation_id的记者 表
lang_abbr (varchar 3)
table_name (varchar 42)
translated_text (TEXT)
带语言的表:
lang_abbr (varchar 3)
language (varchar 36)
title (varchar 36)
这是包含此结构的内容(例如新闻)的表格:
id
title (BIGINT) - correspondents to translation_id in translation_entries table
content (BIGINT) - correspondents to translation_id in translation_entries table
author (varchar 36)
date (varchar36)
我试过了:
SELECT *
FROM content LEFT JOIN translations_entries ON (content.title = translation_entries.translation_id AND
content.content = translation_entries.translation_id)
WHERE translations_entries.lang_abbr = 'en';
但是这样,如果内容没有英文翻译,它就不会以默认语言显示
其他方式是:
SELECT * FROM content
Foreach row SELECT * FROM translations_entries WHERE translation_id = this from content AND lang_abbr = 'en'
我的问题是: 从给定语言的表中选择内容的最佳方法是什么,如果该行的语言翻译不存在,则选择内容 默认语言?
答案 0 :(得分:1)
对不起我的第一个答案,这不是解决方案。试试这个:
SELECT *
FROM content LEFT JOIN (SELECT * FROM translations_entries
WHERE translations_entries.lang_abbr = 'en') AS te
ON (content.title = te.translation_id AND
content.content = te.translation_id);