Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Sql Server,选择表2中的列和表1中没有关系的列_Sql Server_Join_Relationship_Coalesce_Not Exists - Fatal编程技术网

Sql server Sql Server,选择表2中的列和表1中没有关系的列

Sql server Sql Server,选择表2中的列和表1中没有关系的列,sql-server,join,relationship,coalesce,not-exists,Sql Server,Join,Relationship,Coalesce,Not Exists,有人能帮我找到正确的查询吗 我有两张桌子,上面有标题/称呼信息。第一个“Title”包含标题/称呼的系统/英语定义的最终列表,另一个“titletransation”包含已添加的翻译文本。任何语言代码的翻译数据可能全部或部分缺失,因此在缺失时必须提供默认系统数据 Title ----- TitleId INT PK Name VARCHAR(12) /* English (en) / system version */ TitleTranslation -------------

有人能帮我找到正确的查询吗

我有两张桌子,上面有标题/称呼信息。第一个“Title”包含标题/称呼的系统/英语定义的最终列表,另一个“titletransation”包含已添加的翻译文本。任何语言代码的翻译数据可能全部或部分缺失,因此在缺失时必须提供默认系统数据

Title
-----
TitleId   INT PK
Name      VARCHAR(12) /* English (en) / system version */

TitleTranslation
----------------
TitleTranslationId    INT PK
TitleId               INT FK
LanguageCode          CHAR(2) /* 2 character ISO code (fr, es, ...) */
Name                  VARCHAR(12)
我需要对一个指定参数执行的操作,该参数表示语言代码,例如“fr”,返回系统中存在的任何翻译标题“Name”,或未存在的默认英语系统标题“Name”。此外,我需要能够提供一个过滤器的名称

到目前为止,我有这个疑问

DECLARE @LanguageCode CHAR(2);
SELECT  @LanguageCode = 'fr';

DECLARE @NameFilter VARCHAR(12);
SELECT  @NameFilter = 'M';

SELECT          COALESCE([TitleTranslation].[name], [Title].[Name]) [Name]
FROM            [ref].[Title]
LEFT OUTER JOIN [ref].[TitleTranslation]
        ON      [ref].[TitleTranslation].[TitleId] = [ref].[Title].[TitleId]
WHERE          ([ref].[TitleTranslation].[LanguageCode] = @LanguageCode
OR              [ref].[TitleTranslation].[LanguageCode] IS NULL)
AND             COALESCE([TitleTranslation].[name], [Title].[Name]) Like '%' + @NameFilter + '%';

具有外部联接的合并函数是实现这一点的最佳方法吗?还是有更好的方法呢?

我觉得没问题。简言之,谨防过早优化。简而言之,除非你有充分的理由,或者查询本身没有达到你想要的效果,否则不要尝试优化它。如果您确实想优化它,请通过ssms运行它并显示它的查询计划。sql本身看起来不错。谢谢你的建议。我对标准积垢以外的任何问题都不擅长!