2011-11-10 63 views
1

我需要做一個插入,但爲字段,他們來自2個獨立的表。Sql插入到

這裏是一個似乎不工作的查詢:如果你看到什麼毛病statment

insert into @tblfirst (ProgID,ProgDate,Spk,Spkadd) 
    values(

    (select ProgID,ProgDate from Prog where ProgSys = '1100), 
    (select Spkr,SpkrAdd from Spk where SpkrSys = '201X42') 

    ) 

不知道。

+0

這兩個查詢都保證返回最多一行嗎? –

+0

有一個錯字:其中ProgSys ='1100' – Edu

回答

0
declare @ProgID int 
declare @ProgDate datetime 
declare @Spkr varchar(100) 
declare @SpkrAdd varchar(100) 

select @ProgID = ProgID, @ProgDate = ProgDate 
from Prog 
where ProgSys = '1100' 

select @Spkr = Spkr, @SpkrAdd = SpkrAdd 
from Spk 
where SpkrSys = '201X42' 

insert into @tblfirst (ProgID,ProgDate,Spk,Spkadd) 
values (@ProgID, @ProgDate, @Spkr, @SpkrAdd) 

聲明:我假定數據類型是什麼,但你明白了。這有點直觀,你肯定沒有問題,這INSERT

0

這是與數據庫相關的語法,因此下面的查詢是我認爲最具可移植性的代碼。請注意,這可能會導致重複。打開模式的細節可能會允許更多選擇性的JOIN子句。

嘗試:

insert into @tblfirst (ProgID, ProgDate, Spk, Spkadd) 
select p.ProgID, p.ProgDate, 
    s.Spk, s.Spkadd 
from Prog p 
inner join Spk s on 1=1 
where p.ProgSys = '1100' 
    and s.SpkrSys = '201X42' 
0

如何:

insert into @tblfirst (ProgID,ProgDate,Spk,Spkadd) 
values (
    select ProgId,ProgDate, Spkr, SpkrAdd from Prog, Spk 
    where ProgSys = '1100'and 
      SpkrSys = '201X42' 
) 
0

如何使用加入?

insert into @tblfirst (ProgID,ProgDate,Spk,Spkadd) 
select ProgID,ProgDate,Spkr,SpkrAdd 
from Prog, Spk 
where Prog.ProgSys = '1100' and SpkrSys = '201X42' 

有點奇怪的加入我同意,但它會完成這項工作。如果Prog和Spk之間有任何關係,那麼這可能構成where子句的一部分。