我想从数据库中执行某种组合。
我的数据库表:
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-moscow
和moscow-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
对?
答案 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 强>