现有三表如下:
A:id,type
B:typeID,Desc
C:typeID,Desc
A.type为B,C的主键
要求从A中关联表B、C,根据表A的type值不同来查询不同的Desc(例如当type为B时取B.Desc,当A.type为C时取C.Desc),不用存储过程,此SQL语句应该怎么写????
在线等。多谢各位大侠拔刀相助!
A:id,type
B:typeID,Desc
C:typeID,Desc
A.type为B,C的主键
要求从A中关联表B、C,根据表A的type值不同来查询不同的Desc(例如当type为B时取B.Desc,当A.type为C时取C.Desc),不用存储过程,此SQL语句应该怎么写????
在线等。多谢各位大侠拔刀相助!
解决方案 »
- 求解SQLserver问题,在不知道列名的情况下怎么按列来查询 符合限定条件 行的数据?
- 将表中一列中的固定数值转换成两列或多列该如何查询,大家看看
- 求sql语句,请高手帮忙
- where id in(3,1,4,2)我希望最后得到结果仍是按3,1,4,2的顺序排序,应该怎么做?
- mssql2005的优化器 遇到复杂的sql,是不是有点犯傻?
- 关于字符串的一个问题,希望火力支持
- 如何通过存储过程遍历数据集?解决马上结贴
- 高人指点:关于SQL server 的问题!!!!!急!!!
- 求救,进来看看,谢谢先!在线等!
- 如何在视图中显示中文名称呢
- 求SQL查询语句,在线等......
- 兄弟们,救人啊!
select case [type]
when 'B' then B.[Desc]
when 'C' then C.[Desc]
end as [DESC]
from A,B,C
insert A select 1, 'B'
insert A select 2, 'C'create table B(typeID varchar(10), [Desc] varchar(10))
insert B select 'B', 'BB'
insert B select 'B', 'BBB'create table C(typeID varchar(10), [Desc] varchar(10))
insert C select 'C', 'CC'
insert C select 'C', 'CCC'select A.*, [desc]=ISNULL(B.[Desc], C.[Desc]) from A
left join B on A.type=B.typeID
left join C on A.type=C.typeID--result
id type desc
----------- ---------- ----------
1 B BB
1 B BBB
2 C CC
2 C CCC(4 row(s) affected)