sql - 3个空行表之间的SQL连接
问题描述
我需要保存短语的语言翻译。我创建了 3 个表,一个用于短语,一个用于语言,一个用于翻译,其中包含以下详细信息:
- 语言 - 名称和 ID。
- 短语 - 名称和 ID。
- 翻译 - id、翻译、fk_language 和 fk_phrase。
当我获得所有存在的短语以及特定语言的所有翻译时,如何创建查询。如果没有翻译,我仍然希望所有短语都在那里。网页有一个下拉菜单来选择一种语言,然后输入所有短语的翻译,然后使用一个保存按钮保存所有翻译。
谢谢。
解决方案
你会使用left join
:
select p.*, t.*
from phrases p left join
(translations t join
languages t
on t.fk_language = l.id and l.language = 'XXX'
)
on t.fk_phrase = p.id ;
FROM
这是在子句中使用括号是编写查询的合理方式的有趣案例之一。
推荐阅读
- restsharp - 如何在 RestSharp 请求中指定日期格式
- javascript - 为什么要在字符串状态检查中使用严格比较?
- hsqldb - HSQL - 插入具有多个值的表
- option - 如果选择了选项,则执行命令 =
- typescript - tsc 中可笑的错误跟踪。如何添加更多详细信息?
- google-cloud-firestore - Firestore 规则无法检查引用是否存在
- visual-studio - 将 Visual Studio 项目从 x86 转换为 x64
- python - Python:如何在字符串中查找子字符串出现的时间?
- elasticsearch - Elasticsearch 自定义地理距离过滤器
- python - 从多源网络爬虫的 ajax 请求中下载数据