Каково наилучшее условие соединения для этих двух сценариев? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть две таблицы, к которым я пытаюсь присоединиться, чтобы получить данные, по которым мне нужно отчитаться.

  • В первой таблице содержатся все стажеры, нанятые компанией.
  • Во второй таблице содержатся все те люди, которые были интернами, но были наняты на полную ставку.

Требуется вытащить данные, которые показывают всех нанятых стажеров и из этих стажеров, получить счет всех тех, кого мы наняли в штатную должность.

Проблема в том, что когда я выполняю внутреннее объединение, я получаю только стажеров, которые были наняты на полную ставку, а не всех стажеров, которые были наняты, независимо от того, перешли ли они на полный рабочий день или нет.

Есть предложения?

1 Ответ

0 голосов
/ 03 октября 2018

Рекомендуется использовать внешнее соединение (вместо внутреннего соединения).

Вот пример: примеры таблиц:

SQL> create table t_first
  2    (id   number,
  3     name varchar2(20));

Table created.

SQL> create table t_second
  2    (id   number,
  3     name varchar2(20));

Table created.

SQL> insert into t_first (id, name)
  2    select 1, 'Little' from dual union all
  3    select 2, 'Foot'   from dual union all
  4    select 3, 'Scott'  from dual union all
  5    select 4, 'Tiger'  from dual;

4 rows created.

SQL> insert into t_second (id, name)
  2    select 3, 'Scott'  from dual union all
  3    select 4, 'Tiger'  from dual;

2 rows created.

Выберите все из них, выделите тех, кто был нанят дляполная занятость:

SQL> select h.id, h.name,
  2    decode(f.id, null, 'No', 'Yes') full_time_position
  3  from t_first h left join t_second f on h.id = f.id
  4  order by h.id;

        ID NAME                 FUL
---------- -------------------- ---
         1 Little               No
         2 Foot                 No
         3 Scott                Yes
         4 Tiger                Yes

SQL>

Я не уверен, что вы имели в виду, когда считали тех, кто был принят на полную ставку.Где бы вы хотели отобразить эту информацию?Как?Если бы вы могли привести пример, было бы проще предложить решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...