如何连接3个表,以便可以替换result中的某些空值。
我试过了:
SELECT ISNULL(Culture,CultureInfoCode) as Culture, ISNULL(Name,'NA') as Name, ISNULL(Value,'NA') as Value
FROM SiteLanguages Left JOIN
WebDbResources ON SiteLanguages.CultureInfoCode = WebDbResources.Culture Left JOIN
KeyWebDbResources ON WebDbResources.KeyWebDbResourceID = KeyWebDbResources.KeyWebDbResourceID
where Status=1
结果如下
Culture Name Value
en-US Key_FirstName John
TR NA(Here It should also be Key_FirstName) NA (ok)
但是我希望第二行中的Name字段为Key_FirstName和Value NA(用于相应的TR Culture)。
这是架构:
SiteLanguages:
CultureInfoCode Status
en-US 1
TR 1
AR 0
KeyWebDbResources:
KeyWebDbResourceID Name
1 Key_FirstName
WebDbResources:
WebDbResourceID KeyWebDbResourceID Culture Value
1 1 en-US FirstName
TR不存在第二次翻译,这就是为什么我想在有文化和关键的连接上填空。
答案 0 :(得分:1)
从KeyWebDbResources
开始加入并加入SiteLanguages
以获取应该存在的所有文本。左外连接到WebDbResources
以查找实际找到的文本。
SELECT
ISNULL(SiteLanguages.Culture, CultureInfoCode) as Culture,
ISNULL(KeyWebDbResources.Name,'NA') as Name,
ISNULL(WebDbResources.Value,'NA') as Value
from KeyWebDbResources
cross join SiteLanguages
left outer join WebDbResources
ON WebDbResources.KeyWebDbResourceID = KeyWebDbResources.KeyWebDbResourceID
AND WebDbResources.Culture = SiteLanguages.CultureInfoCode
where SiteLanguages.Status=1
问题在于你没有得到文化......