2016-04-29 53 views
0

在我的问题中,我有一个旅行路线表和一张城市表,路线表显示您的出发城市和您的目的地城市为城市编号,城市编号名字在另一张桌子上。错误的SQL查询,需要从一张表中搜索两个名字

我想搜索所有从X市启动路线,对于这一点,我做了这个查询

SELECT ciudad.nombre as Origen, 
ciudad.nombre as Destino, 
km as Distancia, 
rutas.km*rutas.precio_km as Precio, 
fecha as Fecha 
FROM rutas, ciudad where "Santiago"=ciudad.nombre and ciudad.id_ciudad=rutas.ciudad_or; 

enter image description here

这是结果我收到,请注意奥利=命运之

enter image description here

这是路由表,ciudad_or和ciudad_de是从城市到城市。

enter image description here

这是我的城市表

但它会打印在同一个城市对我的出身,我的目的,我不知道如何使它显示正确的目的地(这也是一个ID)

我与一个城市的名称搜索路线

+0

给我们一些样品数据。 – Blank

+0

添加一些图片 – user3577419

+0

没有图片。它们不能被复制和粘贴以创建测试表。创建表格的DML和填充它们的DML。 –

回答

1

你需要做一个双连接到你的城市表中的每个相应的...

SELECT 
     r.id_ruta, 
     r.cuidad_or, 
     Orig.nombre as Origen, 
     r.cuidad_de, 
     Dest.nombre as Destino, 
     any_other_columns... 
    from 
     Routes r 
     join ciudad as Orig 
      ON r.ciudad_or = Orig.id_ciudad 
     join ciudad as Dest 
      ON r.cuidad_de = Dest.id_ciudad 
    where 
      orig.nombre="Santiago" 
     OR dest.nombre="Santiago" 

现在,做一个或寻找要么始发或目的地的更好的办法是通过的资格预审类似

一个UNION我建议您cuidad表中的两个指标。一个在cuidad_or,另一对cuidad_de

SELECT 
     r.id_ruta, 
     r.cuidad_or, 
     Orig.nombre as Origen, 
     r.cuidad_de, 
     Dest.nombre as Destino, 
     any_other_columns... 
    from 
     Routes r 
     join ciudad as Orig 
      ON r.ciudad_or = Orig.id_ciudad 
     join ciudad as Dest 
      ON r.cuidad_de = Dest.id_ciudad 
    where 
     orig.nombre="Santiago" 
UNION 
SELECT 
     r.id_ruta, 
     r.cuidad_or, 
     Orig.nombre as Origen, 
     r.cuidad_de, 
     Dest.nombre as Destino, 
     any_other_columns... 
    from 
     Routes r 
     join ciudad as Orig 
      ON r.ciudad_or = Orig.id_ciudad 
     join ciudad as Dest 
      ON r.cuidad_de = Dest.id_ciudad 
    where 
     dest.nombre="Santiago" 

联盟将致力于更好地在各个指标不是试图两者合二为一。哇...今晚在手写输入错误的列名,周期和间隔时间太晚......迟到。