Как два соединяют две таблицы в Oracle SQL - PullRequest
0 голосов
/ 18 января 2019

Я новичок в 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

Применяя типичные возможности JOIN из Oracle SQL, соединяя ключом 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';

Заранее спасибо

1 Ответ

0 голосов
/ 18 января 2019

Вы, похоже, близки к решению, вам просто нужно преобразовать свое (ВНУТРЕННЕЕ) СОЕДИНЕНИЕ в ЛЕВОЕ (НАРУЖНОЕ) СОЕДИНЕНИЕ. Также все условия в левой объединенной таблице должны быть помещены в предложение 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'
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...