表A,
字段:id,   name,         start
       1    张三工作室      1
       2    李四工作室      0
       3    王五工作室      1
       4    小明工作室      0表B
字段:id    name           a_id     value
       1     张三           1         1
       2     张三女朋友     1         0
       3     王五           3         0
       4     王五女朋友     3         0
现在要查询,表A字段name,start  表B字段name   条件是A与B想关联,
如果表A中工作室友有默认负责人,就是表B中Value值为1的,
如果表A中工作室没有默认联系人,就随便选择一条,
如果没有负责人,者显示为空结果a.name(工作室)  b.name(负责人)   a.start(状态)
张三工作室          张三               1
王五工作室        王五女朋友(或者王五)  1
小明工作室          无                 0
李四工作室          无我的sql语句是这样地
select a.name as name,b.name as username,a.start from a as a left join
b as b  on  a.id=b.a_id  where b.value=1 or b.value=0 or isnull(value)有哪位大侠能帮忙看看,sql语句应该怎么修改sql左连接单子段多条件

解决方案 »

  1.   

    ;with ta(id,name,start) as
    (
    select 1,'张三工作室',1
    union all select 2,'李四工作室',0
    union all select 3,'王五工作室',1
    union all select 4,'小明工作室',0
    ),
    tb(id,name,a_id,value) as
    (
    select 1,'张三',1,1
    union all select 2,'张三女朋友',1,0
    union all select 3,'王五',3,0
    union all select 4,'王五女朋友',3,0
    )
    select a.name as name,username=case when b.name is not null then b.name else (select top 1 name from tb c where c.a_id=a.id order by NEWID()) end 
    ,a.start 
    from ta a 
    left join tb b  on  a.id=b.a_id  and a.start=1 and b.value=1
    --结果:多次运行,第一行总是没有变化,第三行都在变化
    /*
    name username start
    张三工作室 张三 1
    李四工作室 NULL 0
    王五工作室 王五女朋友 1
    小明工作室 NULL 0
    */
      

  2.   

    结果a.name(工作室)  b.name(负责人)   a.start(状态)
    张三工作室          张三               1
    王五工作室        王五女朋友(或者王五)  1
    小明工作室          无                 0
    李四工作室          无               0
    这个结果啊,每个工作室的名字要有,每个工作室如果有负责人,就显示负责人(表B,value=1 的),
    如果没有,就显示相关人员(随机一条),
    如果相关人员都没有,就显示无