mybatisSQL语句查询问题
各位大神下午好,问题如下:查询涉及到四个表?一个用户消息表admin_message(存储用户的消息记录),一个用户表admin(用于查询发信人与收信人对应id的姓名),...
各位大神下午好,问题如下:
查询涉及到四个表?一个用户消息表 admin_message(存储用户的消息记录),一个用户表admin(用于查询发信人与收信人对应id的姓名),还有一个角色表role(存储角色信息),一个中间表admin_role表。
一个用户发送了两条消息,一条是单人发送,一条是多人发送。单人发送有接收者的id 对应admin表的adminid 角色id为空
多人发送对于发送者来说没有接收者的id,只有角色id
情况是这样 我要查询我所有发送的消息 并且显示接收人的姓名(admin表)
如果这条信息是多人发送的 那显示接收角色的名字
单人发送可以用接收者的id跟admin表里查到。问题是当我发送
的是多人类型时怎么查询?多人发送时接收者id是空的,这时候我要去
角色表里面查到这个角色的姓名
目前我的语句是这么些的只查了俩表 只能单人发送记录,求大神指点
怎么三张表查,(receiver_id是接收者的id),如果这条消息是多人发送
那么receiver_id是为0,然后将角色id存入role_id。现在就是如果当这条
消息是多人,那么am.receiver_id = a.admin_id肯定是不存在的
怎么用消息表里面的role_id去role表里面查到角色名?可能说的乱,在线等!
语句是写在mybatis里面的 能给mybatis的就更好啦
SELECT am.*,a.real_name FROM admin_msg am,admin a
AND am.send_flg = 0 AND am.sender_id = 1 AND am.receiver_id = a.admin_id
想要的结果为
(adminMessage) (admin) (role)
msg表数据 接收者姓名 接收者角色名
XX单人发送 张三 null
XX多人发送 null 管理员 展开
查询涉及到四个表?一个用户消息表 admin_message(存储用户的消息记录),一个用户表admin(用于查询发信人与收信人对应id的姓名),还有一个角色表role(存储角色信息),一个中间表admin_role表。
一个用户发送了两条消息,一条是单人发送,一条是多人发送。单人发送有接收者的id 对应admin表的adminid 角色id为空
多人发送对于发送者来说没有接收者的id,只有角色id
情况是这样 我要查询我所有发送的消息 并且显示接收人的姓名(admin表)
如果这条信息是多人发送的 那显示接收角色的名字
单人发送可以用接收者的id跟admin表里查到。问题是当我发送
的是多人类型时怎么查询?多人发送时接收者id是空的,这时候我要去
角色表里面查到这个角色的姓名
目前我的语句是这么些的只查了俩表 只能单人发送记录,求大神指点
怎么三张表查,(receiver_id是接收者的id),如果这条消息是多人发送
那么receiver_id是为0,然后将角色id存入role_id。现在就是如果当这条
消息是多人,那么am.receiver_id = a.admin_id肯定是不存在的
怎么用消息表里面的role_id去role表里面查到角色名?可能说的乱,在线等!
语句是写在mybatis里面的 能给mybatis的就更好啦
SELECT am.*,a.real_name FROM admin_msg am,admin a
AND am.send_flg = 0 AND am.sender_id = 1 AND am.receiver_id = a.admin_id
想要的结果为
(adminMessage) (admin) (role)
msg表数据 接收者姓名 接收者角色名
XX单人发送 张三 null
XX多人发送 null 管理员 展开
展开全部
select am.*,
case when am.receiver_id = 0 then null else (select a.real_name from admin a where a.admin_id = am.receiver_id) end as admin,
case when am.receiver_id = 0 then (select b.role_name from admin_role b where b.role_id = am.role_id) else null end as role
from admin_msg am where am.send_flg = 0 AND am.sender_id = 1
case when am.receiver_id = 0 then null else (select a.real_name from admin a where a.admin_id = am.receiver_id) end as admin,
case when am.receiver_id = 0 then (select b.role_name from admin_role b where b.role_id = am.role_id) else null end as role
from admin_msg am where am.send_flg = 0 AND am.sender_id = 1
追问
大神你好屌啊。。。膜拜中,什么时候我也能这么犀利。。万分感激,thanks。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询