在内部联接中选择 2 列

Ben*_*min 5 sql-server t-sql

下面是我的两个表:

在此处输入图片说明

我正在尝试编写一个连接这两个表的查询,并为结果映射表的给定源 ID返回Source_TitleDestination_Title

我曾尝试编写查询,但我只能解决难题的一部分而不是整个问题。

SELECT Title as SourceTitle 
FROM Result Map AS RM 
INNER JOIN Table_Result TR ON RM.SourceId = TR.Id
Run Code Online (Sandbox Code Playgroud)

上面的查询为我提供了源的标题,但没有提供目标标题。

Geo*_*e K 9

本杰明。如果我理解正确,你想要这样的东西:

SELECT TR1.Title AS SourceTitle, 
       TR2.Title AS DestinationTitle
FROM [Result Map] AS RM
INNER JOIN Table_Result TR1 ON RM.Source_Id=TR1.Id
INNER JOIN Table_Result TR2 ON tr2.Id=RM.destination_id;
Run Code Online (Sandbox Code Playgroud)

查询将返回

SourceTitle DestinationTitle
ABC         DEF  
Run Code Online (Sandbox Code Playgroud)


Jer*_*erb 8

首先,不要担心这不仅仅是你。这总是让 SQL 的新手绊倒。我经常看到它。这几乎是 SQL 学习中不可避免的一部分。

我会尽量用文字来做。George K 已经回答了合适的代码。

诀窍是不要将 Table_Result 视为 {从中提取标题的表}。

这不可避免地导致你写:

…
FROM {results table}
INNER JOIN {Table with titles in}
  ON {a join for which you can't find the appropriate logic}
Run Code Online (Sandbox Code Playgroud)

您需要根据该表在您的上下文中提供的功能来考虑。这在你的情况下是双重的。来源标题和目的地标题。

这为您提供了一个看起来更像的查询:

…
FROM {result table}
INNER JOIN {table from which you will extract source title}
  ON {join which allows you to retrieve a source title}
INNER JOIN {table from which you will extract destination title}
  ON {join which allows you to retrieve a destination title}
Run Code Online (Sandbox Code Playgroud)