Sql 如何基于输入上的两个单独字段和联接表上的一个字段联接到表中?

Sql 如何基于输入上的两个单独字段和联接表上的一个字段联接到表中?,sql,Sql,我有两张这样的桌子: Contacts: +----+----+ |Name| # | +----+----+ |Joe | 123| +----+----+ |Jane| 456| +----+----+ Calls: +----+----+ |To |From| +----+----+ |123 | 456| +----+----+ |456 | 123| +----+----+ 我需要创建一个返回如下表的查询: Log: +------+------+------+------+

我有两张这样的桌子:

Contacts:
+----+----+
|Name| #  |
+----+----+
|Joe | 123|
+----+----+
|Jane| 456|
+----+----+

Calls:
+----+----+
|To  |From|
+----+----+
|123 | 456|
+----+----+
|456 | 123|
+----+----+
我需要创建一个返回如下表的查询:

Log:
+------+------+------+------+
|To    |ToName|From  |FrName|
+------+------+------+------+
|123   | Joe  |  456 | Jane |
+------+------+------+------+
|456   | Jane |  123 | Joe  |
+------+------+------+------+

这在概念上似乎很简单,但我根本不知道如何将SQL组合在一起。我尝试过嵌套选择和嵌套联接,但无法使其正确运行(如果有的话)。提前谢谢。

您基本上需要加入两份联系人的通话:

我会的

SELECT ca.To,
       co1.Name AS ToName,
       ca.From,
       co2.Name AS FrName
FROM Contacts co1 INNER JOIN Calls ca
ON co1.[#] = ca.To INNER JOIN Contacts co2
ON co2.[#] = ca.From
SELECT c.to AS "To",
       t.name AS "ToName",
       c.from AS "From",
       f.name AS "FromName"
  FROM Calls c
  JOIN Contact AS t ON t.number = c.to
  JOIN Contact AS f ON f.number = c.from
 ORDER BY 1
;