2015-10-16 81 views
1

我在绕过简单查询时遇到了问题。我有一个Link表是这样的:查询链接表SQL

+----------+----------+ 
| SourceID | TargetID | 
+----------+----------+ 
| 1  | 2  | 
+----------+----------+ 
| 1  | 3  | 
+----------+----------+ 
| 3  | 4  | 
+----------+----------+ 
| 3  | 5  | 
+----------+----------+ 

Names

+----------+----------+ 
| ID  | Name  | 
+----------+----------+ 
| 1  | Mitch | 
+----------+----------+ 
| 2  | Cheryl | 
+----------+----------+ 
| 3  | Sue  | 
+----------+----------+ 
| 4  | Harry | 
+----------+----------+ 
| 5  | Bob  | 
+----------+----------+ 

一个表,我希望输出像这样。像链接表一样结构化,但用名称代替。

+------------+------------+ 
| SourceName | TargetName | 
+------------+------------+ 
| Mitch  | Cheryl  | 
+------------+------------+ 
| Mitch  | Sue  | 
+------------+------------+ 
| Sue  | Harry  | 
+------------+------------+ 
| Sue  | Bob  | 
+------------+------------+ 

感谢您的帮助。

回答

2

您必须joinnames表使用不同的别名两次。如果link表的ID不在names中,请将join更改为left join

Fiddle

select t1.name as sourcename, t3.name as targetname 
from link t2 
join names t1 on t1.id = t2.sourceid 
join names t3 on t3.id = t2.targetid