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