2013-04-12 30 views
2

我对SQL很陌生,大多数我通过搜索都能够回答的其他问题,但是这似乎很难找到类似的东西。我看到thisthis看起来很相似,但我无法找到答案,但我认为它应该很简单。如何将一个表中的多个列连接到另一个表中的列

为了简化我的数据库,我试图将两个表连接到视图中。

一个表(a_main)在用户ID(UID)和他们的用户名(名称)之间有一个映射 第二个表(log_points)有许多列,包括两个用户(user1和user2)。这两个用户由用户ID标识,但我想在视图中显示他们的用户名。

SELECT name, UID FROM a_main 

返回类似

Jeff 1234

SELECT date, user1, user2 FROM log_points 

返回

2013-03-22 1222 1234

我希望视图能够通过名称而不是id返回用户。

如果它只是一个用户,我可以做一个简单的JOIN

SELECT date, a_main.name FROM log_points 
INNER JOIN a_main ON log_points.user1 = a_main.UID 

,但我无法弄清楚如何也加入到用户2 a_main.UID。

任何建议将不胜感激!我正在使用MySQL。

编辑找到答案here

SELECT t1.name AS person1, t2.name AS person2 
FROM log_points t 
INNER JOIN a_main t1 ON t1.UID = t.user1 
INNER JOIN a_main t2 ON t2.UID = t.user1; 
+0

有2个用户1222,1234,它们像对数点表中的列那样工作......对吧? –

+0

我想通了,我发现一个相关的问题解决了它 - –

+1

@ Jeff-P,那么你应该告诉我们解决方案是什么 - 当别人有与你的问题相同的问题时。 ;-) – Darwind

回答

2

试试这个:

SELECT t1.name AS person1, t2.name AS person2 
FROM log_points t 
JOIN a_main t1 ON t1.UID = t.user1 
JOIN a_main t2 ON t2.UID = t.user1; 
0

试试这个

SELECT date, (SELECT name FROM a_main where UID=user1)as user1, (SELECT name FROM a_main where UID=user2)as user2 FROM log_points. 

可以在任何给对性能的深入了解这两个查询。

相关问题