首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql话语左连接,单字段多条件

2013-10-29 
sql语句左连接,单字段多条件表A,字段:id,name,start1张三工作室12李四工作室03王五工作室14小明工作室0表B

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 
,a.start 
from ta a 
left join tb b  on  a.id=b.a_id  and a.start=1 and b.value=1


--结果:多次运行,第一行总是没有变化,第三行都在变化
/*
nameusernamestart
张三工作室张三1
李四工作室NULL0
王五工作室王五女朋友1
小明工作室NULL0
*/

热点排行