首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:将表连接到自身

问SQL:将表连接到自身
EN

Stack Overflow用户
提问于 2014-04-25 15:44:21
回答 2查看 107关注 0票数 0

我得到了一张每条车道一美元的运输车道清单。问题是,有时间接路线比直接路线便宜。我希望能够找到这些实例并将它们插入一个新的表中。我试过用左外接,但我想不出来。下面是我正在寻找的内容和我尝试过的代码的示例。我不知道这是什么数据库。

(编辑)示例:来自loc的成本。0380至loc。1428年(直接)是100.00美元,从0380到1732,然后1428 (间接)是99.61美元。

Org / Dest数量

0380 \ 1428 #100.00美元

0380 \ 1732 \x{e76f}92.26美元

1732年1428美元7.35美元

代码语言:javascript
复制
INSERT INTO dbo.NewTable 
SELECT T1.Org, T1.Dest, T1.Amount, T2.Org, T2.Dest, T2.Amount, T3.Org, T3.Dest, T3.Amount
FROM (( dbo.RateTable [T1] 
    LEFT OUTER JOIN dbo.RateTable [T2] 
        ON T1.Org = T2.Org) 
    LEFT OUTER JOIN dbo.RateTable [T3] 
        ON T1.Dest = T3.Dest AND T2.Dest = T3.Dest)
WHERE T1.Amount > (T2.Amount + T3.Amount);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-25 15:53:17

我认为唯一需要进行的更改是在最后一个联接条件下:

代码语言:javascript
复制
SELECT T1.Org, T1.Dest, T1.Amount, T2.Org, T2.Dest, T2.Amount, T3.Org, T3.Dest, T3.Amount
FROM dbo.RateTable T1 JOIN
     dbo.RateTable T2
     ON T1.Org = T2.Org JOIN
     dbo.RateTable T3 
     ON T1.Dest = T3.Dest AND T2.Dest = T3.Org
----------------------------------------^
WHERE T1.Amount > (T2.Amount + T3.Amount);

请注意,我将left outer join更改为常规内部联接。where条件需要匹配。

这是假定"Org“标准的”原产地“或类似的东西。

票数 2
EN

Stack Overflow用户

发布于 2014-04-25 15:54:47

下面的简单选择如何?如果煅烧量是所需的计算量,是否可以将其简化。从表中选择( CalcAmount1 > CalcAmount2然后Amount1 Amount2 Amount2 END)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23297567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档