2017-09-13 2 views
0

ich eine Tabelle Hub:in SQL-Tabelle einfügen mit zwei Fremdschlüssel aus temporären Tabellendaten

enter image description here

und zweite Tabelle Preise:

enter image description here

In dieser , FromHubId und ToHubId sind Fremdschlüssel aus Hub Tabelle Ich möchte einige Daten aus einer Datei in Rates Tabelle hinzufügen. Was ich habe, ist bisher versucht: eine temporäre Tabelle erstellen und einfügen Werte drin:

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), 
: 
: 
:; 

andere Temp-Tabelle erstellen und versuchen, Werte in sie einzufügen:

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; 

Aber es einfügen nur Werte, bei denen FromHub und ToHub gleich sind. Ich möchte alle Werte einfügen, d. H. Für verschiedene From und To Hub.

Jede Hilfe wird geschätzt. Vielen Dank..!!

Antwort

1

versuchen Sie dies: Sie separat fro beide from und to hubId mit Tabelle alias wie unten beitreten haben:

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, Dank es funktioniert, aber es gibt einige Wiederholungs Einträge wie Auckland nach Auckland 4mal ? – Preet

+0

Verwenden Sie 'DISTINCT', wie ich gerade in meiner Abfrage hinzugefügt habe. – Susang

+0

Es gibt immer noch Einträge, aber anders als zuvor – Preet

Verwandte Themen