[英]Wrong SQL Query, need to search two names from a single table
在我的問題中,我有一個旅行路線表和一個城市表,路線表將您的出發城市和目的地城市顯示為城市ID,而城市ID的名稱在另一個表中。
我想搜索所有從X city出發的路線,為此,我進行了此查詢
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;
這是我得到的結果,請注意Origen = Destino
這是路線表,ciudad_or和ciudad_de是往返城市。
這是我的城市表
但是它將在我的出發地和目的地上打印相同的城市,我不知道如何使它顯示正確的目的地(這也是一個ID)
我正在搜索帶有城市名稱的路線
您需要對每個城市的城市表進行兩次聯接...
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"
現在,進行“或”尋找起點或目的地的更好方法是通過對諸如
我建議您在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"
與嘗試將兩個索引合並為一個索引相比,聯合將在單個索引上更好地工作。 哇...今晚用手指弄壞了錯誤的列名,句號和空格...太晚了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.