Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle sql与3个表连接_Java_Sql_Oracle_Join_Left Join - Fatal编程技术网

Java Oracle sql与3个表连接

Java Oracle sql与3个表连接,java,sql,oracle,join,left-join,Java,Sql,Oracle,Join,Left Join,lk_状态表 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

lk_状态表

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
用户组表

id  group
01  10
02  20
03  20
04  30
05  20
06  10
07  20
我想加入这些表,它们会给我lk_状态表中的状态输出。条件是仅显示用户属于角色=20的那些状态

输出应该是

id  desc
MD  Maryland
FL  Florida
NJ  NewJersy
CA  California
我尝试加入,但它为每个用户和组提供了多行。请帮助我使用根据需要显示的oracle sql。

您可以使用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
)
您可以使用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
)

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

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

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

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
试试这个:

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
试试这个:

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

我试着加入,但是。。。如果你展示了你的努力,有人会指出你做错了什么@GMB已经发布了一个可能的工作解决方案,但从您自己的尝试中学习将是一个更好的学习体验。因为用户组和用户表之间存在一对一关系,而且每个用户都有一个唯一的状态id,因此加入这些表的结果不能包含每个用户的多行。所以我认为你加入表格的方式不对。最好发送代码以查找可能的错误。我尝试加入,但。。。如果你展示了你的努力,有人会指出你做错了什么@GMB已经发布了一个可能的工作解决方案,但从您自己的尝试中学习将是一个更好的学习体验。因为用户组和用户表之间存在一对一关系,而且每个用户都有一个唯一的状态id,因此加入这些表的结果不能包含每个用户的多行。所以我认为你加入表格的方式不对。最好发送代码以查找可能的错误。