求一sql语句...不过本人琢磨半天写不出来..高人指点
...我且慢慢说来
主表orders 定单表
orderid isreceive receivename userid receiveaddress paymode carrymode orderstate ordertime
注解: id 是否为会员 非会员姓名 会员id 非会员地址 支付方式 发货方式 定单状态 定单形成时间
int 0/1 int int int
从表users 会员表
userid username
注 会员id 会员姓名从表paymode 支付方式表
payid payname
注 id 支付方式从表carrymode 运送方式表
carryid carryname
注 id 发货方式要求:显示主表orders的信息
1.如果是会员显示users里的username,如果是非会员就显示receivename ,receiveaddress
isreceive int型 0会员 1非会员
2.还有carrymode ,carrymode 要显示中文,不能显示int型的要从各自的表里查
3.orderstate 也要显示中文.没有自己的表 0--未处理 1--已发货 反正要用判断的case语句,如果是会员就要做4表联结,非会员要做3表联结
兄弟我问题说的够具体把...求这条sql语句..不会的兄弟也过来学学
...我且慢慢说来
主表orders 定单表
orderid isreceive receivename userid receiveaddress paymode carrymode orderstate ordertime
注解: id 是否为会员 非会员姓名 会员id 非会员地址 支付方式 发货方式 定单状态 定单形成时间
int 0/1 int int int
从表users 会员表
userid username
注 会员id 会员姓名从表paymode 支付方式表
payid payname
注 id 支付方式从表carrymode 运送方式表
carryid carryname
注 id 发货方式要求:显示主表orders的信息
1.如果是会员显示users里的username,如果是非会员就显示receivename ,receiveaddress
isreceive int型 0会员 1非会员
2.还有carrymode ,carrymode 要显示中文,不能显示int型的要从各自的表里查
3.orderstate 也要显示中文.没有自己的表 0--未处理 1--已发货 反正要用判断的case语句,如果是会员就要做4表联结,非会员要做3表联结
兄弟我问题说的够具体把...求这条sql语句..不会的兄弟也过来学学
if object_id('tempdb.dbo.#orders') is not null drop table #orders
create table #orders
(orderid int identity(1, 1) not null ,
isreceive bit,
receivename varchar(50),
userid varchar(50),
receiveaddress varchar(100),
paymode int,
carrymode int,
orderstate int,
ordertime DateTime
)Insert Into #orders
Select 1,null,1001,'北京市',1,1,1,GetDate() union all
Select 0,'李四',null,'北京市',2,2,0,GetDate() union all
Select 1,null,1002,'北京市',1,1,1,GetDate() union all
Select 0,'赵六',null,'北京市',1,1,0,GetDate()
if object_id('tempdb.dbo.#users') is not null drop table #users
create table #users
(
userid varchar(50),
username varchar(50)
)
Insert Into #users
Select 1001,'张三' union all
Select 1002,'王五'
if object_id('tempdb.dbo.#paymode ') is not null drop table #paymode
create table #paymode
(
payid varchar(50),
payname varchar(50)
)
Insert Into #paymode
Select 1,'AAA' union all
Select 2,'BBB' if object_id('tempdb.dbo.#carrymode ') is not null drop table #carrymode
create table #carrymode
(
carryid varchar(50),
carryname varchar(50)
)
Insert Into #carrymode
Select 1,'CCC' union all
Select 2,'DDD' Select orderid ,
case when isreceive = 1 then username
else receivename end as name ,
case when isreceive = 1 then null
else receiveaddress end as receiveaddress ,
P.payname ,C.carryname ,
case when orderstate = 1 then '已处理'
else '未处理' end as orderdatate , ordertime From #orders O
Left Join #users U on O.userid=U.userid
Left Join #paymode P on O.paymode = P.payid
Left Join #carrymode C on O.carrymode= C.carryid
order By orderid
orderid name receiveaddress payname carryname orderdatate ordertime
----------- ------ ------------------------------- ------------- ------------------------
1 张三 NULL AAA CCC 已处理 2008-06-03 22:05:58.200
2 李四 北京市 BBB DDD 未处理 2008-06-03 22:05:58.200
3 王五 NULL AAA CCC 已处理 2008-06-03 22:05:58.200
4 赵六 北京市 AAA CCC 未处理 2008-06-03 22:05:58.200(所影响的行数为 4 行)