OUTER JOIN 从不同的列名到同一列
OUTER JOIN from different column names to same column
我正在尝试 select 来自不同 table 的列(这些列具有不同的名称)并使用外部联接将它们合并到一个 table 中。我该怎么做呢?
(我用的是sqlplus)
这是一个例子:
Table一个:
a.NAME1 a.NAME2 a.RATING
Jack Sparrow 4
Table b:
b.FIRSTNAME b.LASTNAME b.RATING
Jack Sparrow 7
Table 3:
c.F_NAME c.L_NAME c.RATING
Jack Sparrow 6
我想要一个这样的table:
NAME RATING
Jack 4
7
6
我试过这个代码
SELECT
a.NAME1 AS NAME,
b.FIRSTNAME AS NAME,
c.F_NAME AS NAME,
a.RATING AS RATING,
b.RATING AS RATING,
c.RATING AS RATING
FROM a
FULL OUTER JOIN (b
CROSS JOIN c)
ON (a.NAME1 = b.FIRSTNAME
AND a.NAME1 = c.F_NAME);
但这没有用。我该如何实现这一目标?
select a.NAME1, a.NAME2, a.RATING, b.RATING, c.RATING
from a
left outer join b on b.FIRSTNAME = a.NAME1 and b.LASTNAME = a.NAME2
left outer join c on c.F_NAME = a.NAME1 and c.L_NAME = a.NAME2
听起来你根本不想加入表格。如果您连接三个表,每个表有 1 行,您最终会得到一个包含单行和多列的结果集。由于您的目标是最终得到三行数据,因此您需要使用 union all
SELECT a.name1, a.rating
FROM a
UNION ALL
SELECT b.firstname, b.rating
FROM b
UNION ALL
SELECT c.f_name, c.rating
FROM c
如果要消除重复行,请使用 union
而不是 union all
。
我正在尝试 select 来自不同 table 的列(这些列具有不同的名称)并使用外部联接将它们合并到一个 table 中。我该怎么做呢? (我用的是sqlplus) 这是一个例子:
Table一个:
a.NAME1 a.NAME2 a.RATING
Jack Sparrow 4
Table b:
b.FIRSTNAME b.LASTNAME b.RATING
Jack Sparrow 7
Table 3:
c.F_NAME c.L_NAME c.RATING
Jack Sparrow 6
我想要一个这样的table:
NAME RATING
Jack 4
7
6
我试过这个代码
SELECT
a.NAME1 AS NAME,
b.FIRSTNAME AS NAME,
c.F_NAME AS NAME,
a.RATING AS RATING,
b.RATING AS RATING,
c.RATING AS RATING
FROM a
FULL OUTER JOIN (b
CROSS JOIN c)
ON (a.NAME1 = b.FIRSTNAME
AND a.NAME1 = c.F_NAME);
但这没有用。我该如何实现这一目标?
select a.NAME1, a.NAME2, a.RATING, b.RATING, c.RATING
from a
left outer join b on b.FIRSTNAME = a.NAME1 and b.LASTNAME = a.NAME2
left outer join c on c.F_NAME = a.NAME1 and c.L_NAME = a.NAME2
听起来你根本不想加入表格。如果您连接三个表,每个表有 1 行,您最终会得到一个包含单行和多列的结果集。由于您的目标是最终得到三行数据,因此您需要使用 union all
SELECT a.name1, a.rating
FROM a
UNION ALL
SELECT b.firstname, b.rating
FROM b
UNION ALL
SELECT c.f_name, c.rating
FROM c
如果要消除重复行,请使用 union
而不是 union all
。