Oracle SQL: собрать всех пользователей в одну таблицу, но не в другую, и присоединиться к третьей таблице. - PullRequest
0 голосов
/ 24 мая 2018

Мне интересно, как использовать oracle sql для получения всех строк, которые находятся в одной таблице, но не в другой.У меня проблема в том, что две таблицы не имеют общего поля, поэтому мне нужно присоединиться к третьей главной таблице.

Это то, что я пробовал, но не выдает никаких ошибок, нотакже выдает 0 записей, что невозможно, но ясно, что я сделал что-то не так.

 SELECT a.USER_ID, c.AD_ID, c.CREATED_DATE_ FROM $A$ a, $C$ c, $B$ b 
 WHERE (b.USER_ID IS NULL AND a.CUSTOMER_ID = c.CUSTOMER_ID) 

У меня есть три таблицы:

В таблице A есть поля CUSTOMER_ID & USER_ID

В таблице B есть поле USER_ID

В таблице C есть поле CUSTOMER_ID

Мне нужны все пользователи, которые находятся в таблице C, но не в таблице B. Все они находятся в таблице A, потому что это основной списокпользователей.

Любое понимание будет с благодарностью.

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Мое решение:

select * from TableC tc
join TableA ta on tc.CUSTOMER_ID=ta.CUSTOMER_ID
left join TableB tb on tb.USER_ID=ta.USER_ID
where ta.USER_ID is null
0 голосов
/ 24 мая 2018

Я думаю, что вы хотите:

select a.USER_ID, c.AD_ID, c.CREATED_DATE_
from a join
     c
     on a.customer_id = c.customer_id
where not exists (select 1 from b where b.user_id = a.user_id);
0 голосов
/ 24 мая 2018
SELECT
  *
FROM
  table_a
WHERE
  NOT EXISTS (SELECT * FROM table_b WHERE table_b.user_id     = table_a.user_id    )
  AND EXISTS (SELECT * FROM table_c WHERE table_c.customer_id = table_a.customer_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...