我有兩張桌子,CITIES并且FLIGHTS:
城市
| ID | 姓名 |
|---|---|
| 1 | 紐約 |
| 2 | 巴黎 |
| 3 | 東京 |
| 4 | 阿姆斯特丹 |
航班
| ID | 出發ID | 到達_id |
|---|---|---|
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 3 |
| 4 | 2 | 4 |
我需要撰寫一個查詢來查找所有航班連接。
所需的輸出將是:
| 出發城市 | 到達城市 |
|---|---|
| 紐約 | 巴黎 |
| 紐約 | 東京 |
| 巴黎 | 東京 |
| 巴黎 | 阿姆斯特丹 |
如何撰寫這個查詢?
uj5u.com熱心網友回復:
您可以為此使用 join 。內連接和左連接都可以滿足您的目的:
左連接查詢:
Select c.name as departure_city, ct.name as arrival_city from FLIGHTS f
left join CITIES c on f.departure_id=c.id
left join CITIES ct on f.arrival_id = ct.id
輸出:
| 出發城市 | 到達城市 |
|---|---|
| 紐約 | 巴黎 |
| 紐約 | 東京 |
| 巴黎 | 東京 |
| 巴黎 | 阿姆斯特丹 |
內連接查詢:
Select c.name as departure_city, ct.name as arrival_city from FLIGHTS f
inner join CITIES c on f.departure_id=c.id
inner join CITIES ct on f.arrival_id = ct.id
輸出:
| 出發城市 | 到達城市 |
|---|---|
| 紐約 | 巴黎 |
| 紐約 | 東京 |
| 巴黎 | 東京 |
| 巴黎 | 阿姆斯特丹 |
db<>在這里擺弄
uj5u.com熱心網友回復:
你可以做兩個連接:
SELECT departure.name AS departure,
arrival.name AS arrival
FROM cities AS departure
JOIN flights f ON departure.id = f.departure_id
JOIN cities arrival ON arrival.id = f.arrival_id;
如果沒有更多資訊,不清楚您是要進行左連接還是內連接,是否需要 where 子句,是否需要 order by 等。也許最好學習一些 SQL 基礎知識,然后問一個更精確的問題,如果必要的。如果你想試試:db<>fiddle
uj5u.com熱心網友回復:
您也可以使用以下 SQL:
SELECT c1.NAME, c2.NAME FROM CITIES c1, CITIES c2, flights f WHERE c1.id = f.departure_id AND c2.id = f.arrival_id;
準備好的陳述句如下:
CREATE TABLE CITIES(id int, name varchar(32));
INSERT INTO CITIES values(1, 'New York'), (2, 'Paris'), (3, 'Tokyo'), (4, 'Amsterdam');
CREATE TABLE FLIGHTS(id int, departure_id int, arrival_id int);
INSERT INTO FLIGHTS VALUES(1,1,2), (2,1,3), (3,2,3), (4,2,4);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474659.html
