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

SQL 数据库联查
表A
Qid   AQEid   AText   QCategory
778   SH01     sada      3
779   SH02               5
780   SHO3               6
780   SH04               6

表B
AQEid    Qid    title
SH01     778
SH02     779      A
SH02-1   779      B
SH02-2   779      C
SH03     780      E
SH04     780      F
SH05     780      G
SH06     780      H

我现在需要得到这样一个结果集
Qid     AText   QCategory   title
778      sada      3          
779                5         A
780                6         E、F

说明:当表A QCategory=3(可以理解为:一问一答)时,Qid所对应表B的title为空值,因为答案就是表A中的AText字段值,所以等于我不需要这个字段的值,当表A QCategory=5或QCategory=6时(可以理解为:单选或多选),我需要的答案在表B中,表B是所有问题的所有选项表,我需要联查表B找到需要的答案即(title字段值),如果QCategory=6多选需要将查到的数据title拼接为字符串。求一条SQL语句如何能满足需求

SQL 数据库 需求

------解决方案--------------------

--> 测试数据:@表A
declare @表A table([Qid] int,[AQEid] varchar(4),[AText] varchar(4),[QCategory] int)
insert @表A
select 778,'SH01','sada',3 union all
select 779,'SH02','',5 union all
select 780,'SHO3','',6 union all