如何将一个表中的多个列连接到另一个表中的列

时间:2013-04-12 22:16:18

标签: mysql sql

我对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

但我无法弄清楚如何将user2加入a_main.UID。

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

EDIT找到了答案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;

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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.

任何查询都可以提供有关性能的见解。