簡體   English   中英

MySQL連接兩個表,左側不同的行,右側相同的行

[英]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_cityto_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM