我有两张这样的表:
table1_ride
--------
id ride id
from_which_city city id
to_city city id
table2_city
--------
id city id
name city name
我想要的是当我提交查询SELECT * FROM ride
时,我想告诉我ride_id, from_which_city, to_city like
这个:
1 Manchester Liverpool
而不是
1 8 3 Where 8 = ManchesterID and 3 = LiverpoolID
我试过左连接
SELECT * FROM ride LEFT JOIN city ON ride.from_which_city = city.id
它适用于from_which_city
。如何执行此操作同时适用于from_which_city
和to_city
。
我没有找到左连接的情况:t1.b = t2.a AND t1.c = t2.a
。
提前致谢!
答案 0 :(得分:3)
试试这个:
SELECT r.id, c1.name, c2.name
FROM table1_ride r
JOIN table2_city c1 on r.from_which_city=c1.id
JOIN table2_city c2 on r.from_which_city=c2.id
答案 1 :(得分:1)
使用表别名:
SELECT ride.id, fromcity.name, tocity.name
FROM ride
LEFT OUTER JOIN city fromcity ON ride.from_which_city = fromcity.id
LEFT OUTER JOIN city tocity ON ride.to_city = tocity.id
答案 2 :(得分:0)
两次加入table2_city表并使用别名:
SELECT table1_ride.id, fc.name as from_city_name, tc.name as to_city_name
FROM table1_ride
INNER JOIN table2_city AS fc ON
table1_ride.from_which_city=fc.id
INNER JOIN table2_city AS tc ON
table1_ride.to_which_city=tc.id
(必要时用左外部替换......)。
答案 3 :(得分:-1)
SELECT c.id, m1.name, m2.name FROM mytabl1 as c, mytabl2 as m1, mytabl2 as m2
WHERE
c.cfrom = m1.city AND c.cto = m2.city
ORDER BY c.id
如果我使用上面的代码是我得到的,这就是你的预期。
id name name
1 City 1 City 2
2 City 3 City 4
3 City 1 City 3
4 City 2 City 4