[英]Mysql join two tables with different row on left side and same row on right side
我有兩個這樣的表:
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
提前致謝!
嘗試這個:
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
使用表別名:
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
加入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
(如有必要,用左外部替換內部...)。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.