日期:2014-05-17  浏览次数:20477 次

sql语句左连接,单字段多条件
表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 左连接 单子段多条件

------解决方案--------------------
;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