0

向大家问好!

我一直在思考这几天,希望有人能指出我正确的方向:

我有一张带有车站链接的桌子:

stationID
lineID

我想在所有连接的站点之间生成站点对。车站将在两种情况下连接。

  1. 如果它们具有相同的 lineID(即它们是直接连接的)
  2. 如果线相交(线相交,如果它们有任何公共站点)。

我该怎么做?提前感谢您的意见和想法!

4

2 回答 2

0

不要将其存储lineIDstation表中。而是使用三个表:stationlinestation_line。第三个表将车站与线路组合在一起,给出了一个车站可能有零条、一条或多条线路。

station:
  ID
  name

line:
  ID
  name

station_line:
  station
  line
于 2013-01-29T09:57:25.723 回答
0

看看这个(SQLFiddle):

select distinct a.stationName as 'st1', b.stationName as 'st2', a.lineId from 
tbl as a, tbl as b where 
(a.lineId in (select lineId from tbl where stationId in 
              (select stationId from tbl where lineId=b.lineId)) && 
 a.stationId<>b.stationId) ;
于 2013-01-29T09:58:45.990 回答