Mysql查询成对的互连站

时间:2013-01-29 09:43:18

标签: mysql join

向所有人致以问候!

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

我有一个带有电台链接的表格:

stationID
lineID

我想在所有连接的电台之间生成电台对。两个站点将连接两个站点。

  1. 如果他们有相同的lineID(即他们直接连接)
  2. 如果线相交(如果它们有任何公共站,则线相交)。
  3. 我该怎么做?提前感谢您的意见和建议!

2 个答案:

答案 0 :(得分:0)

不要将lineID存储在station表中。相反,请使用三个表:stationlinestation_line。第三个表将站点与线路组合在一起,使得站点可能具有零个,一个或多个线路。

station:
  ID
  name

line:
  ID
  name

station_line:
  station
  line

答案 1 :(得分: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) ;