求一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语句..不会的兄弟也过来学学
   
  

解决方案 »

  1.   


    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 行)