SQL数据多表联查

首先,创建两个表出来

第一个表

                                                ​​​​​​​        

第二个表 

要求: 实现两表查询,将创建人(creator)、审批人(operator)、配送员(sendor)等显示真             实姓名;
         如果为null,则显示空;
         如果不为null,则显示真实姓名 

要求实现以下的数据情况:

1,2020-12-12,200,张三,'长沙',177777777,1,,
2,2020-12-13,1000,李四,'株洲',188888888,2,王五,
3,2020-12-14,1000,王五,'湘潭',199999999,3,张三,李四

话不多说,直接上操作 

我在这里用的是多表联查的嵌套方法,我们先一个一个的查找,然后在放到一起,看数据

select a.oid,a.odate,a.oprice,a.creator,a.add,a.tell,a.state,a.operator,if(a.sendor=b.id,b.rename,null) sendor from t_order a left join t_user b on a.sendor=b.id

这是查询一个

 一个的查看到了,我们就查两个的

select a.oid,a.odate,a.oprice,a.creator,a.add,a.tell,a.state,if(a.operator=b.id,b.rename,null) operator,a.sendor from t_order a left join t_user b on a.operator=b.id

像这样出现两个的了,这一步就完成了,最后查三个的

select a.oid,a.odate,a.oprice,if(a.creator=b.id,b.rename,null) creator,a.add,a.tell,a.state,a.operator,a.sendor from t_order a left join t_user b on a.creator=b.id 

 

然后就是最关键的一步了

把他们都嵌套起来 就完成了

-- 完整的代码
select a.oid,a.odate,a.oprice,a.creator,a.add,a.tell,a.state,a.operator,if(a.sendor=b.id,b.rename,null) sendor from (
select a.oid,a.odate,a.oprice,a.creator,a.add,a.tell,a.state,if(a.operator=b.id,b.rename,null) operator,a.sendor from (
select a.oid,a.odate,a.oprice,if(a.creator=b.id,b.rename,null) creator,a.add,a.tell,a.state,a.operator,a.sendor from 
t_order a left join t_user b on a.creator=b.id) a left join t_user b on a.operator=b.id) a left join t_user b on a.sendor=b.id

 

像这样子就是我们所想要的效果了,好了,到这里就结束了ヾ(≧▽≦*)o 

 

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值