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 上查看。
我有一个规范化 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 上查看。