两个如何在Oracle SQL中连接两个表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个如何在Oracle SQL中连接两个表相关的知识,希望对你有一定的参考价值。

我是Oracle SQL的新手,我需要以下方面的帮助:

假设我有一张一年中所有周的表格,例如:

ID_WEEK_YR
----------
2018011
2018012
2018013
...
2018124

另一张桌子上的产品销售仅在一年中的某几周

ID_PRODUCT    ID_WEEK_YR   SALES
----------    ----------  -------
TOY#1          2018083       5
TOY#1          2018051       3
TOY#1          2018043       1

我需要加入表格才能获得如下内容:

ID_PRODUCT    ID_WEEK_YR   SALES
----------    ----------  -------
TOY#1          2018011      null
TOY#1          2018012      null
TOY#1          2018013      null
...
TOY#1          2018043       5
...
TOY#1          2018051       1
...
TOY#1          2018083       3
...
TOY#1          2018124      null

应用Oracle SQL中的典型JOIN可能性,通过密钥ID_WEEK_YR加入,我再次获得第二个表

SELECT 
    A11.ID_WEEK_YR,   
    A12.ID_PRODUCT
FROM 
    WEEKS_YR A11
    JOIN  SALES_U_YR A12
        ON (A11.ID_WEEK_YR=A12.ID_WEEK_YR)
WHERE a12.ID_PRODUCT='TOY#1';

提前致谢

答案

您似乎接近解决方案,您只需要将(INNER)JOIN转换为LEFT(OUTER)JOIN。此外,左连接表上的所有条件都必须放在ON子句而不是WHERE子句中。

SELECT 
    'TOY#1',
    A11.ID_WEEK_YR,   
    A12.SALES
FROM 
    WEEKS_YR A11
    LEFT JOIN  SALES_U_YR A12
        ON A11.ID_WEEK_YR=A12.ID_WEEK_YR
        AND A12.ID_PRODUCT='TOY#1'
;

以上是关于两个如何在Oracle SQL中连接两个表的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE中如果两个字段如果能关联的语句怎么写

如何在sql中交叉连接两个表

Oracle - 两个表中两行之间的差异或变化

如何在 Oracle 10 中连接两个表的结果

已经建立了两个表,请问如何用SQL语句建立关联?

Oracle_SQL 连接和子查询