oraclesql与3个表的连接

oknrviil  于 2021-08-13  发布在  Java
关注(0)|答案(3)|浏览(560)

lk\ U状态表

  1. id desc
  2. MD Maryland
  3. FL Florida
  4. VA Virginia
  5. NY NewYork
  6. NJ NewJersy
  7. CA California

用户表

  1. user_ID Name Active State
  2. 01 AAA 1 MA
  3. 02 BBB 1 MD
  4. 03 CCC 1 CA
  5. 04 DDD 1 NY
  6. 05 EEE 1 NJ
  7. 06 FFF 1 FL
  8. 07 GGG 1 FL

用户组表

  1. id group
  2. 01 10
  3. 02 20
  4. 03 20
  5. 04 30
  6. 05 20
  7. 06 10
  8. 07 20

我想加入表,这将给我的lk\ U状态表的状态输出。条件是只显示用户属于role=20的那些状态
输出应为

  1. id desc
  2. MD Maryland
  3. FL Florida
  4. NJ NewJersy
  5. CA California

我尝试加入,但它给了我多行,每个用户和组一行。请帮助我使用按要求显示的oracle sql。

3wabscal

3wabscal1#

试试这个:

  1. SELECT DISTINCT s.*
  2. FROM lk_states s, users u, users_groups g
  3. WHERE s.id = u.state
  4. AND u.user_id = g.id
  5. AND g.group = 20
p4tfgftt

p4tfgftt2#

你可以用 exists 以及相关子查询:

  1. select s.*
  2. from lk_states s
  3. where exists (
  4. select 1
  5. from users u
  6. inner join user_groups ug on ug.id = u.user_id
  7. where u.state = s.id and ug.group = 20
  8. )
wztqucjr

wztqucjr3#

你试过这个吗。将关键字保留为列名并不理想

  1. Select s.*
  2. from lk_states s
  3. JOIN users u ON u.state = s.id
  4. JOIN users_groups ug ON ug.id = u.user_id
  5. WHERE ug.u_group = 20

相关问题