日期:2014-05-20  浏览次数:20514 次

|M| 求SQL查询语句:选择性的对表进行查询 谢谢 急
订单表   order  
id       uid     mid     totil
1             0         1       1000
2             2         0       2000
3             1         0       3000
管理员表   Manager
id     name
1       小红
用户表
id     name
1       小张
2       小王

查询出来要求是:当uid为0时就先用mid查询反则用uid查询
查询出来为
id     name   totil
1       小红   1000
2       小王   2000
3       小张   3000

谢谢很急
以上结账

------解决方案--------------------
写两个函数,分别查询返回一个name
当uid为0时调用一个函数
else 调另一个
------解决方案--------------------
select order.id,order.uid,order.mid,order.totil,Manager.name
Where order.mid=Manager.id and order.uid=0
union all
select order.id,order.uid,order.mid,order.totil,user.name
Where order.uid=user.id and order.uid <> 0

------解决方案--------------------

select a1.id b1.name, a1.totil from order a1 ,Manager b1
where a1.mid = b1.id and a1.uid =0
union
select a2.id b2.name, a2.totil from order a ,用户表 b2
where a2.uid = b2.id and a2.uid <> 0
------解决方案--------------------
是一次返回啊本来就是一条语句用case 判断一下执行那个不就好了
当然用联合也可以,速度差不多,数据库里也不会增加些垃圾代码
------解决方案--------------------
写成存储过程中可以不?