2013-03-06 39 views
0

最新最好的方式,从表中选择的名字两次SQL SELECT从相同的表两次

NAME table 
Id Name 
1 john 
2 zoe 
3 joe 
4 abby 

COUPLE table 
NameId NameId2 
1  2 
3  4 

结果应该

Name Name 
john zoe 
joe abby 

我会做这样的事情

SELECT NAME.Name, NAME2.Name 
FROM COUPLE, NAME, NAME AS NAME2 
WHERE NAME.Id=COUPLE.NameId 
AND NAME2.Id=COUPLE.NameId2 

这是获得结果的最佳方式吗? (性能)

+0

如果成功,那么你有什么要问的?什么需要“更好”?您是否遇到性能问题? – 2013-03-06 15:03:37

+0

在Intro SQL中看起来很不错。 – jp2code 2013-03-06 15:04:19

+0

我会使用显式的'JOINS'而不是使用非ANSI标准在你的'WHERE'语句中将它们加入它们' – LittleBobbyTables 2013-03-06 15:05:40

回答

1

我最大的建议是使用显式的连接和范围也是你的第二个名字在SELECT列表

SELECT NAME.Name, NAME2.Name Name2 
FROM COUPLE 
INNER JOIN NAME ON NAME.Id=COUPLE.NameId 
INNER JOIN NAME AS NAME2 ON NAME2.Id=COUPLE.NameId2 
1
SELECT n1.Name, n2.Name 
FROM Couple C 
JOIN Name n1 ON (n1.id = c.nameID) 
JOIN Name n2 ON (n2.id = c.nameID2)