Вопрос SQL-запроса, как сделать запрос, который выводит все записи двух таблиц

У меня есть две таблицы, CITIES и FLIGHTS:

ГОРОДА

я быназвание
1Нью-Йорк
2Париж
3Токио
4Амстердам

РЕЙСЫ

я быотправление_идентификаторid_прибытия
112
213
323
424

Мне нужно написать запрос, который находит все стыковки рейсов.

Желаемый результат:

Город отправленияГород прибытия
Нью-ЙоркПариж
Нью-ЙоркТокио
ПарижТокио
ПарижАмстердам

Как написать этот запрос?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
39
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать соединение для этого. И внутреннее соединение, и левое соединение будут служить вашей цели:

Запрос с левым соединением:

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

Выход:

Город отправленияГород прибытия
Нью-ЙоркПариж
Нью-ЙоркТокио
ПарижТокио
ПарижАмстердам

дб <> рабочий пример здесь

Вы можете сделать два соединения:

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, нужен ли порядок и т. д. Может быть, было бы лучше изучить некоторые основы SQL, а затем задать более точный вопрос, если нужно. Попробуйте, если хотите: дб <> рабочий пример

Также вы можете использовать ниже 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);

Это очень устаревший и плохой стиль, чтобы избежать использования JOIN при объединении таблиц.

Jonas Metzler 14.05.2022 09:52

Пожалуйста, дайте ссылки на некоторые доказательства, где мы должны использовать JOIN при объединении таблиц.

SeanH 14.05.2022 10:23
stackoverflow.com/questions/1018822/…
Jonas Metzler 14.05.2022 10:56

Другие вопросы по теме