2017-09-13 79 views
0

我有一個表樞紐兩個外鍵:插入SQL表與臨時表的數據

enter image description here

和第二臺價格

enter image description here

在這,FromHubIdToHubId是來自Hub的外鍵 我想在Rates表中添加一個文件的一些數據。什麼到目前爲止,我已經試過是: 在它創建臨時表並插入值:

CREATE TABLE #Table 
(FromHub varchar(30), 
ToHub varchar(30), 
Rate float, 
rate40 float, 
) 

INSERT INTO #Table values('AUCKLAND','AUCKLAND',229.157325588818,341.973239724851), 
('AUCKLAND','BLENHEIM',1825.03244430479,2738.13624934331), 
('AUCKLAND','CHRISTCHURCH',1977.80399469734,2966.11840915988), 
('AUCKLAND','DUNEDIN',2280.99676393793,3422.08272879301), 
('AUCKLAND','GREYMOUTH',2432.59314855822,3650.06488860958), 
('BLENHEIM','AUCKLAND',1520.66450929195,2280.99676393793), 
('BLENHEIM','BLENHEIM',229.157325588818,341.973239724851), 
('CHRISTCHURCH','AUCKLAND',1748.64666910852,2622.97000366278), 
('CHRISTCHURCH','DUNEDIN',911.92863926627,1367.89295889941), 
('CHRISTCHURCH','GREYMOUTH',685.121645221953,1028.27005071905), 
: 
: 
:; 

創建另一個臨時表,並試圖在其中插入值:

CREATE TABLE #Table1 
(FromHubId uniqueidentifier, 
ToHubId uniqueidentifier, 
Rate float, 
Rate40 float, 
FromHub varchar(30), 
ToHub varchar(30) 
); 

insert into #Table1 
select h.HubId As FromHubId, h.HubId As ToHubId, t.Rate, t.Rate40, t.FromHub, t.ToHub 
FROM #Table t JOIN Hub h ON 
t.FromHub=h.Centre and t.ToHub=h.Centre; 

select * from #Table1; 

但是,它只能插入FromHub和ToHub相同的值。我想要插入所有值,即不同的From和To集線器。

任何幫助將不勝感激。謝謝..!!

回答

1

試試這個:你必須使用如下表alias來回回都fromto hubId分別加入:

INSERT INTO #Table1 
SELECT DISTINCT h.HubId As FromHubId, 
    h1.HubId As ToHubId, 
    t.Rate, 
    t.Rate40, 
    t.FromHub, 
    t.ToHub 
FROM #Table t 
JOIN #Hub h ON t.FromHub=h.Centre 
JOIN #Hub h1 ON t.ToHub=h1.Centre; 
+0

@Suraj,由於它的工作,但也有像奧克蘭一些重複的條目奧克蘭4倍? – Preet

+0

使用'DISTINCT',因爲我剛纔在查詢中添加了。 – Susang

+0

仍然有重複的條目,但不同於以前 – Preet