Oracle SQL: один запрос двух таблиц - PullRequest
0 голосов
/ 25 мая 2020

У меня следующий базовый запрос:

SELECT INIT,TIDSPUNKT,AKTIVITETSTYPE 
   FROM ExampleDB.SAFE_DATA_VP_KR 
   WHERE DATO = '2020-05-25' AND
         AKTIVITETSTYPE = 'Udg¿ende/Produktion' AND
         INIT IN (SELECT initialer
                    FROM ExampleDB.SAFE_DATA_MEDARBEJDER
                    WHERE STATUS IN (1) AND
                          MED_STEDKODE_ID IN (5530) AND
                          ROLE_ID NOT IN (4)) 
   ORDER BY INIT, TIDSPUNKT;

Я хочу изменить его и добавить ACTIVITY_ID! = 53, как показано ниже, но это не сработает.

SELECT INIT, TIDSPUNKT,AKTIVITETSTYPE 
  FROM ExampleDB.SAFE_DATA_VP_KR 
  WHERE DATO = '2020-05-25' 
  AND AKTIVITETSTYPE = 'Udg¿ende/Produktion' AND
      INIT IN (SELECT initialer 
                 FROM ExampleDB.SAFE_DATA_MEDARBEJDER 
                 WHERE STATUS IN (1) AND
                       MED_STEDKODE_ID IN (5530) AND
                       ROLE_ID NOT IN (4)) AND
      INIT IN (SELECT initialer 
                 FROM ExampleDB.SAFE_DATA_VAGTPLAN 
                 WHERE AKTIVITET_ID != 53) 
  ORDER BY INIT, TIDSPUNKT;

1 Ответ

1 голос
/ 25 мая 2020

Предположительно, вы хотите, чтобы NOT IN отфильтровал любые init значения с активностью 53:

and init not in (Select initialer
                 from ExampleDB.SAFE_DATA_VAGTPLAN
                 where AKTIVITET_ID = 53
                )

Примечание. Я настоятельно не рекомендую использовать NOT IN с подзапросами, потому что они не правильно обрабатывать NULL значения. Вы должны переписать это, используя NOT EXISTS - после того, как вы указали для своих таблиц ссылки на соответствующие псевдонимы и уточнили все ссылки на столбцы.

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