Oracle sql объединить с 3 таблицами - PullRequest
1 голос
/ 28 мая 2020

таблица lk_state

id  desc
MD  Maryland
FL  Florida
VA  Virginia
NY  NewYork
NJ  NewJersy
CA  California

таблица пользователей

user_ID Name    Active  State
01      AAA     1       MA  
02      BBB     1       MD
03      CCC     1       CA
04      DDD     1       NY
05      EEE     1       NJ
06      FFF     1       FL
07      GGG     1       FL

таблица users_groups

id  group
01  10
02  20
03  20
04  30
05  20
06  10
07  20

Я хочу присоединиться к таблицам, которые дадут мне вывод состояний в lk_state таблица. Condiiotn отображает только те состояния, в которых пользователи принадлежат к role = 20

Результат должен быть

id  desc
MD  Maryland
FL  Florida
NJ  NewJersy
CA  California

Я пробовал присоединиться, но он дает мне несколько строк по одной для каждого пользователя и группы. Пожалуйста, помогите мне с oracle sql, который отображается по мере необходимости.

Ответы [ 3 ]

2 голосов
/ 28 мая 2020

Вы можете использовать exists и коррелированный подзапрос:

select s.*
from lk_states s
where exists (
    select 1
    from users u
    inner join user_groups ug on ug.id = u.user_id
    where u.state = s.id and ug.group = 20
)
1 голос
/ 28 мая 2020

Попробуйте следующее:

SELECT DISTINCT s.*
FROM lk_states s, users u, users_groups g
WHERE s.id = u.state
  AND u.user_id = g.id
  AND g.group = 20
1 голос
/ 28 мая 2020

Вы пробовали это. Не идеально, чтобы ключевые слова оставались в виде имен столбцов

Select s.* 
from lk_states s
JOIN users u ON u.state = s.id
JOIN users_groups ug ON ug.id = u.user_id
WHERE ug.u_group  = 20
...