Java Oracle sql与3个表连接
lk_状态表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
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,因此加入这些表的结果不能包含每个用户的多行。所以我认为你加入表格的方式不对。最好发送代码以查找可能的错误。