日期:2014-05-18  浏览次数:20629 次

多表关联操作语句,谁帮忙看下啊啊
表:A:aid,name,t1,t2,type
  B:id,aid,name,content,type_one,type_two
  C:id,aid,content,type
第一列都是主键,没有外键关系

现在要把A中的(t1=1 and t2=2)的数据插入到C表,A.aid-->C.aid,A.type-->C.type(如果A.type=1那么C.type=‘类型1’,如果A.type=2那么C.type=‘类型2’),C.content比较烦。
假设几个变量a,b
a='<p>'+B.name+'</p>'+B.content (在B表中找aid=A.aid and type_one=1 and type_two=0 的数据,如果存在多条则取第一条,不存在则a值赋值空串)

b='<p>'+B.name+'</p>'+B.content (在B表中找aid=A.aid and type_one=0 and type_two=1 的数据,如果存在多条则按照前后顺序都追加到b中,不存在则b值赋值空串)

然后C.content=a+b

以上的SQL语句怎么写?求大神解答!
没表达清楚的话请海涵~~

------解决方案--------------------
描述的不清楚
------解决方案--------------------
楼主不如给出表结构、数据和想要的结果吧。
------解决方案--------------------
SQL code

建议你提供详细的资料:
例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。
这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。

------解决方案--------------------
是不是这样楼主
SQL code

IF OBJECT_ID('A') IS NOT NULL 
DROP TABLE A
IF OBJECT_ID('B') IS NOT NULL 
DROP TABLE B
IF OBJECT_ID('C') IS NOT NULL 
DROP TABLE C
GO
CREATE TABLE A (aid INT IDENTITY(1,1) ,NAME VARCHAR(10),t1 INT ,t2 INT ,[TYPE] INT)
CREATE TABLE B (id INT IDENTITY(1,1),aid INT ,NAME VARCHAR(10),CONTENT VARCHAR(10),type_one INT,type_two INT)
CREATE TABLE C (id INT IDENTITY(1,1),aid INT,CONTENT VARCHAR(max),[TYPE] VARCHAR(10))

INSERT INTO A 
SELECT 'A1',1,2,1 UNION ALL
SELECT 'A2',1,2,3
go
INSERT INTO B
SELECT 1,'B1','B.Content1',1,0 UNION ALL
SELECT 2,'B2','B.Content2',0,1
DECLARE @a VARCHAR(max)
DECLARE @b VARCHAR(max)
SET @a='';SET @b='';

SELECT TOP 1 @a='<p>'+ISNULL(B.NAME,'')+'</p>'+ISNULL(B.CONTENT,'') 
FROM B  WHERE EXISTS(SELECT 1 FROM A WHERE a.aid=b.aid) AND type_one=1 AND type_two=0
SELECT  @b=@b+'<p>'+ISNULL(B.NAME,'')+'</p>'+ISNULL(B.CONTENT,'') 
FROM B WHERE EXISTS(SELECT 1 FROM A WHERE a.aid=b.aid) AND type_one=0 AND type_two=1

INSERT INTO C (aid,content,[type])
 SELECT aid,CONTENT=@a+@b,(CASE WHEN [type]=1 THEN '类型1' ELSE '类型2' END) AS [TYPE] FROM A WHERE t1=1 AND t2=2
 SELECT * FROM C
 /*
 id          aid         CONTENT                                      type                                                                                                                                                                                                                    TYPE
----------- ----------- ----------------------------------------- ----------
1           1           <p>B1</p>B.Content1<p>B2</p>B.Content2       类型1                                                                                                                                                                                                                    类型1
2           2           <p>B1</p>B.Content1<p>B2</p>B.Content2       类型2
 */