如何在sql数据库中对组合应用组合?

时间:2014-09-19 12:14:45

标签: sql database postgresql

我想从数据库中执行某种组合。

我的数据库表:

start  | end    | costs | date
____________________________________
berlin | Moscow |   100 | 2014-12-10
berlin | paris  |   200 | 2014-12-13
Moscow | berlin |   150 | 2014-12-20
Moscow | berlin |   100 | 2014-12-11

可能的对是具有start-end的相等组合的所有end-start组合。 在我的表格中,这适用于berlin-moscowmoscow-berlin

我想计算从一个城市到另一个城市的“往返”,然后回到同一个开始城市。

我想要实现的结果表是:

start  | end    | costs | away       | wayback
berlin | moscow |   250 | 2014-12-10 | 2014-12-20
berlin | moscow |   200 | 2014-12-10 | 2014-12-11

(这意味着,当从柏林开始前往莫斯科时,回归将是莫斯科 - 柏林)。

数据库查询可以吗?

首先:我如何自我加入一张桌子并获得所有不同的start-end对?

1 个答案:

答案 0 :(得分:3)

作为评论,我建议您不要将保留字用作End用户定义的对象作为表或列。

SELECT F.Start,
       F."end",
       F.costs + R.costs AS costs,
       F.date AS away,
       R.date AS wayback 
FROM   Table1 F
       JOIN Table1 R
           ON F."end" = R.Start
           AND R.date>F.date
           AND F.start = R."end"

<强> SQL Fiddle Demo