MySQL UNION/JOIN 在同一列

MySQL UNION/JOIN on the same column

我有一个规范化 table,它的行是两个指向小部件 table 中的主键的外键。这个想法是小部件成对出现,因此规范化 table 有两列:widget1 和 widget2。

+--------------------+
| widget1 | widget2  |
+--------------------+
|    1    |    3     |
|    2    |    4     |
+--------------------+

每个小部件也有两列;它的主键和它的名字。例如

+------------+
| pk | name  |
+------------+
| 1  | Bob   |
| 2  | Joe   |
| 3  | Max   |
| 4  | Tim   |
+------------+

我正在尝试构建查询以获取哪个名称对应于哪个其他名称,即:

+--------------------+
| widget1 | widget2  |
+--------------------+
|   Bob   |   Max    |
|   Joe   |   Tim    |
+--------------------+

UNION 两个 select 语句给出一长列。我怎样才能得到想要的输出? Here's the SQLFiddle.

您需要两个联接,而不是一个 UNION:

SELECT w1.name, w2.name
FROM   norm
  JOIN widgets w1 ON w1.pk = norm.widget1
  JOIN widgets w2 ON w2.pk = norm.widget2

sqlfiddle 上查看。