多对多,sql语句写法

一般多对多的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 ;


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值