一般多对多的sql语句查询语句,要先转换成一对多,然后按照一对多的方式查询
users表:
create table users (
user_id VARCHAR2(20) not null,
user_Num VARCHAR2(20) not null,
user_password VARCHAR2(50),
user_name VARCHAR2(50),
sex VARCHAR2(20),
phoneNum VARCHAR2(20),
address VARCHAR2(100),
zipCode NUMBER(6),
flag NUMBER(1),
constraint PK_USERS primary key (user_id)
);
table user_relate_role表
create table user_relate_role (
role_id VARCHAR2(20) not null,
user_id VARCHAR2(20) not null,
constraint PK_USER_RELATE_ROLE primary key (role_id, user_id)
);
roles_d表
create table roles_d (
role_id VARCHAR2(20) not null,
role_name VARCHAR2(20),
role_note VARCHAR2(100),
flag NUMBER(1),
constraint PK_ROLES_D primary key (role_id)
);
users与role_d是多对多关系。一个人可以有多个角色,一个角色可以被多个人拥有,因此是多对多关系,需要建立中间表。
要想查询用户信息以及用户所拥有的角色信息:
则sql查询语句如下:
select t.user_id,t.user_num,t.user_password,t.user_name,t.sex,t.phonenum,t.address,t.zipcode,t.flag user_flag ,r.role_id,r.role_name,r.role_note,r.flag role_flag from (select ur.role_id,u.* from user_relate_role ur right join users u on u.user_id = ur.user_id) t
left join
roles_d r on t.role_id=r.role_id ;