我有4个表,s.xcconfig = {
'VALID_ARCHS' => 'arm64 x86_64',
}
和USER(ID, USER_ID, NAME), USER_2(ID, USER_ID, EMAIL)
以及USER_CLASS_MAP(ID, USER_ID, CLASS_ID)
。 CLASS(ID, NAME)
基本上用于映射USER_CLASS_MAP
和USER
之间的MANY-MANY关系。
需要发送属于特定类的所有用户的所有详细信息。我有非工作代码如下 - 任何想法我可能做错了,还是有其他有效的方法来实现同样的目标?
我在多个表上引用(SQL Inner-join with 3 tables?)INNER JOIN,但问题是针对给定的CLASS_ID而不是单个用户,我从{{1获得CLASS
的列表}}
USER_ID
这就是我目前所拥有的:
USER_CLASS_MAP
这里的问题是.ID基本上就是一个列表!
SELECT USER_ID from USER_CLASS_MAP where CLASS_ID=:classID
答案 0 :(得分:2)
您的样本数据:
y2="200"
查询:
create table "USER"(ID, USER_ID, NAME) as (
select 'id1', 'user1', 'rob' from dual union all
select 'id2', 'user2', 'bob' from dual
);
create table USER_2(ID, USER_ID, EMAIL) as (
select 'id1', 'user1', 'rob@something.something' from dual union all
select 'id2', 'user2', 'bob@something.something' from dual
);
create table USER_CLASS_MAP(ID, USER_ID, CLASS_ID) as (
select 'id1', 'user1', 'class1' from dual union all
select 'id2', 'user2', 'class1' from dual
);
create table CLASS(ID, NAME) as (
select 'class1', 'Biology' from dual union all
select 'class2', 'Chemistry' from dual
);
结果:
select u.user_id, u.name, email
from class c
inner join USER_CLASS_MAP uc
on ( uc.class_id = c.id)
inner join "USER" u
on ( uc.user_id = u.user_id)
inner join USER_2 u2
on ( u2.user_id = u.user_id)
请注意user1 rob rob@something.something
user2 bob bob@something.something
是保留字,这就是我使用双引号的原因;最好不要使用保留字来命名对象。