2014-07-23 2 views
0

4 개의 테이블이 있습니다. R, T, RT_imp 및 RT.SQL에서 여러 테이블을 통한 검색

Table R (R_key, R_id) 
Table T (T_key, T_id) 
Table RT_imp (R_id, T_id, A,B,C) 

이 3 개의 표를 사용하여 네 번째 표 RT를 채워야합니다.

Table RT (R_key, T_key, A,B,C) 

ID에 해당하는 키를 찾아야합니다. (RT_imp의 R_id와 관련된 R_key, RT_imp의 T_id와 관련된 T_key와 RT, A, B, C와 함께 RT에 삽입)

저장 프로 시저에서이 작업을 수행해야합니다. 어떻게해야합니까?

+1

는 정확히 무슨 문제가 될 것 같다? 어디서 붙어 있니? 그리고 정확히 ** ** 당신은 * 채우는 것을 의미합니까 *? 먼저 잘라야합니까? –

답변

1

이렇게하면됩니다. 임시 테이블과 별칭을 만들었지 만 테이블 이름으로 바꿀 수는 있습니다.

Declare @R table (R_Key int, R_id int) 
Declare @T table (T_Key int, T_id int) 
Declare @RT_imp table (R_id int, T_id int, A char(1), B char(1), C char(1)) 
Declare @RT table (R_Key int, T_Key int, A char(1), B char(1), C char(1)) 

insert into @RT 
    select r.R_Key 
    , T_Key 
    , rtimp.A 
    , rtimp.B 
    , rtimp.C 
    from @RT_imp rtimp 
    inner join @R r on r.R_id = rtimp.R_id 
    inner join @T t on t.T_id = rtimp.T_id 
0
create procedure insertdata 
Declare @R table (R_Key int, R_id int) 
Declare @T table (T_Key int, T_id int) 
Declare @RT_imp table (R_id int, T_id int, A char(1), B char(1), C char(1)) 
Declare @RT table (R_Key int, T_Key int, A char(1), B char(1), C char(1)) 
AS 
BEGIN 
insert into @RT 
    select r.R_Key, t.T_Key, rtimp.A, rtimp.B, rtimp.C 
    from @RT_imp rtimp, @R r, @T t 
where r.R_id = rtimp.R_id 
and t.T_id = rtimp.T_id 

END