所以这是我的场景:
我正在为我的一个项目进行本地化,通常我会在 C# 代码中执行此操作,但是我想在 SQL 中执行更多此操作,因为我试图稍微增强我的 SQL。
环境:SQL Server 2014 Standard,C# (.NET 4.5.1)
注意:编程语言本身应该是无关紧要的,我只是为了完整性而包括它。
所以我在某种程度上完成了我想要的,但没有达到我想要的程度。JOIN
除了基本的SQL之外,我已经有一段时间(至少一年)完成了任何 SQL ,这是一个相当复杂的JOIN
.
这是数据库相关表的图表。(还有很多,但这部分不是必需的。)
图像中描述的所有关系在数据库中都是完整的 -PK
和FK
约束都是设置和操作的。所描述的列都null
不能。所有的表都有架构dbo
。
现在,我有一个查询几乎可以满足我的要求:也就是说,给定ANY Id ofSupportCategories
和ANY Id of Languages
,它将返回:
如果有合适的,正确的翻译是语言该字符串(即StringKeyId
- >StringKeys.Id
存在,并在LanguageStringTranslations
StringKeyId
,LanguageId
以及StringTranslationId
是否同时存在,那么它的负载StringTranslations.Text
为StringTranslationId
。
如果LanguageStringTranslations
StringKeyId
,LanguageId
和StringTranslationId
组合没有不存在,那么它加载的StringKeys.Name
值。该Languages.Id
是给定的integer
。
我的查询,是否一团糟,如下:
SELECT …
Run Code Online (Sandbox Code Playgroud)