我有一个规范化表,其行是两个外键,指向窗口小部件表中的主键。这个想法是小部件成对出现,因此规范化表有两列: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.
答案 0 :(得分:1)
您想要两个联接,而不是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上查看。