如何在sql数据库中对数据对应用组合数学?
我想从数据库中执行一些组合运算 我的数据库表:如何在sql数据库中对数据对应用组合数学?,sql,database,postgresql,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 可能的对都是sta
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
组合。
在我的表格中,这适用于柏林-莫斯科
和莫斯科-柏林
我想计算从一个城市到另一个城市的“往返”,然后再返回同一个起始城市
我希望得到的结果表是:
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
对?作为注释,我建议您不要将保留字用作用户定义的对象(如表或列)的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"
作为评论,我建议您不要对用户定义的对象(如表或列)使用保留字作为
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"
作为评论,我建议您不要对用户定义的对象(如表或列)使用保留字作为
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"
作为评论,我建议您不要对用户定义的对象(如表或列)使用保留字作为
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"
你的目标是什么?1) 找出是否有从a到B的路径2)找到成本最低的模式?3) 找到路径数?4) 检测图中是否有循环(将有;-)更新:是:可以通过(递归)查询完成。避免lopps是最大的问题。我想找到一条从A-B-B到B的路径,这条路径的成本最低,关于这对遥远的回程日期。你的目标是什么?1) 找出是否有从a到B的路径2)找到成本最低的模式?3) 找到路径数?4) 检测图中是否有循环(将有;-)更新:是:可以通过(递归)查询完成。避免lopps是最大的问题。我想找到一条从A-B-B到B的路径,这条路径的成本最低,关于这对遥远的回程日期。你的目标是什么?1) 找出是否有从a到B的路径2)找到成本最低的模式?3) 找到路径数?4) 检测图中是否有循环(将有;-)更新:是:可以通过(递归)查询完成。避免lopps是最大的问题。我想找到一条从A-B-B到B的路径,这条路径的成本最低,关于这对遥远的回程日期。你的目标是什么?1) 找出是否有从a到B的路径2)找到成本最低的模式?3) 找到路径数?4) 检测图中是否有循环(将有;-)更新:是:可以通过(递归)查询完成。避免lopps是最大的问题。我想找到一条从A-B-B到B的路径,关于这对遥远的回程日期,成本最低。太好了。这让我朝着我的目标前进。您决定将条件的一半放在JOIN子句中,而另一半放在WHERE子句中,有什么特别的原因吗?@j_random_hacker不是真的,只是它是在两次不同的编辑中完成的…:)我将在JOIN中移动它们。Postgres不会使用
[]
来转义列名。您的查询将导致错误。使用-F“end”
。太好了。这让我朝着我的目标前进。您决定将条件的一半放在JOIN子句中,而另一半放在WHERE子句中,有什么特别的原因吗?@j_random_hacker不是真的,只是它是在两次不同的编辑中完成的…:)我将在JOIN中移动它们。Postgres不会使用[]
来转义列名。您的查询将导致错误。使用-F“end”
。太好了。这让我朝着我的目标前进。您决定将条件的一半放在JOIN子句中,而另一半放在WHERE子句中,有什么特别的原因吗?@j_random_hacker不是真的,只是它是在两次不同的编辑中完成的…:)我将在JOIN中移动它们。Postgres不会使用[]
来转义列名。您的查询将导致错误。使用-F“end”
。太好了。这让我朝着我的目标前进。您决定将条件的一半放在JOIN子句中,而另一半放在WHERE子句中,有什么特别的原因吗?@j_random_hacker不是真的,只是它是在两次不同的编辑中完成的…:)我将在JOIN中移动它们。Postgres不会使用[]
来转义列名。您的查询将导致错误。使用-F“end”
。