SQL查询问题,如何制作一个输出两个表的所有条目的查询

发布于 2025-01-28 20:00:13 字数 964 浏览 1 评论 0原文

我有两张桌子,城市航班

城市

ID名称
1纽约
2帕里斯
3东京
4阿姆斯特丹

飞行

IDDeckite_idarrival_id
112 2
213
33 23
424

我需要编写一个查询,以找到所有飞行连接。

所需的输出将是:

Deckit_CityArrival_city
纽约巴黎纽约东京
巴黎东京
巴黎阿姆斯特丹
如何

编写此查询

I have two tables, CITIES and FLIGHTS:

CITIES

idname
1New York
2Paris
3Tokyo
4Amsterdam

FLIGHTS

iddeparture_idarrival_id
112
213
323
424

I need to write a query that finds all the flight connections.

The desired output would be:

departure_cityarrival_city
New YorkParis
New YorkTokyo
ParisTokyo
ParisAmsterdam

How to write this query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

染墨丶若流云 2025-02-04 20:00:13

您可以使用加入。内在的加入和左联盟都将达到您的目的:

与左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

OUTUPT:

DERKION_CITYARRIAVER_CITY
纽约纽约纽约
纽约Tokyo
Paris paris paris paris parisnew York Paris Paris Paris Paris
paris parisAmsterdam

Query with Inner Join:

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

output:

decount_city arrival_cityarrival_city arrival_city
Paris纽约Paris
tokyoParis Tokyo
Paris Tokyo ParisParis Tokyo paris Tokyo
paris TokyoAmsterdam

< em> db&lt;&gt; fiddle

You can use join for that. Both inner join and left join will serve your purpose:

Query with left 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

Outupt:

departure_cityarrival_city
New YorkParis
New YorkTokyo
ParisTokyo
ParisAmsterdam

Query with inner join:

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

Output:

departure_cityarrival_city
New YorkParis
New YorkTokyo
ParisTokyo
ParisAmsterdam

db<>fiddle here

云朵有点甜 2025-02-04 20:00:13

您可以进行两次加入:

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;

没有更多信息,目前尚不清楚您是否要进行左联接或内部连接,是否需要一个条款,是否需要订单。也许最好学习一些SQL基础知识,然后如果需要,请提出一个更精确的问题。
尝试如果需要:

You can do two joins:

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;

Without further information, it's unclear if you want to do a left or inner join, if you need a where clause, if you need an order by etc. Maybe it would be better to learn some SQL basics and then ask a more precise question if necessary.
Try out if you want: db<>fiddle

我为君王 2025-02-04 20:00:13

另外,您可以使用以下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);

Also you can use below 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;

The prepared statement is as below:

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文