我对SQL很陌生,我通过搜索能够回答的大多数其他问题但是这个问题似乎更难找到类似的东西。我确实看到this和this看起来很相似,但我找不到答案,尽管我认为它应该是直截了当的。
为了简化我的数据库,我试图将两个表连接到一个视图中。
一个表(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;
答案 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.
任何查询都可以提供有关性能的见解。