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
;