繁体   English   中英

使用来自临时表数据的两个外键插入SQL表

[英]Insert into SQL table with two foreign keys from Temporary table data

我有一个表Hub

在此处输入图片说明

和第二张桌子的价格

在此处输入图片说明

在此, 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集线器。

任何帮助将不胜感激。 谢谢..!!

试试这个:你必须单独加入来回都fromto使用表hubId alias如下:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM