2016-04-29 52 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" 

聯盟將致力於更好地在各個指標不是試圖兩者合二爲一。哇...今晚在手寫輸入錯誤的列名,週期和間隔時間太晚......遲到。