【问题标题】:How do I join multiple columns in one table to a column in another table如何将一个表中的多个列连接到另一个表中的列
【发布时间】:2013-04-12 22:16:17
【问题描述】:

我对 SQL 很陌生,我可以通过搜索回答大多数其他问题,但这个问题似乎更难找到类似的东西。我确实看到 thisthis 看起来很相似,但我无法找到答案,尽管我认为它应该很简单。

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

一个表 (a_main) 有一个用户 ID (UID) 和他们的用户名 (name) 之间的映射 第二个表(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 返回用户。

如果只有一个用户,我可以直接加入

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

但我不知道如何将 user2 也加入 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;

【问题讨论】:

  • 有 2 个用户 1222、1234,它们的行为类似于日志点表中的列...对吗?
  • 我想通了,我找到了一个解决它的相关问题-
  • @Jeff-P 那么您可能应该告诉我们解决方案是什么 - 因为当其他人遇到与您相同的问题时。 ;-)
  • 我在 EDIT 之后把它放在了底部。我不确定如何添加格式以使其突出显示并格式化为代码
  • 你可以回答你自己的问题 - 这是允许的blog.stackoverflow.com/2011/07/…

标签: mysql sql


【解决方案1】:

试试这个:

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;

【讨论】:

    【解决方案2】:

    试试这个

     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.
    

    任何人都可以深入了解这两个查询的性能。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 2023-03-06
      相关资源
      最近更新 更多