Нужен INNER JOIN cities и users по city_id. Но сначала исправьте DDL: круглые скобки, запятые между полями и строками VALUES.
Получить названия городов вместе с именами их жителей
Нужен INNER JOIN cities и users по city_id. Но сначала исправьте DDL: круглые скобки, запятые между полями и строками VALUES.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Требуется сформировать SQL‑запрос, который выводит названия городов и имена пользователей, проживающих в этих городах.
create table cities {
id serial primary key
name text not null
);
insert into cities
(name)
values
('Москва');
('Санкт-Петерург');
('Краснодар');
create table users {
id serial primary key
name text not null
city_id int not null
references cities (id)
};
insert into users
(name, city_id)
values
('Иван',1),
('Анна',1),
('Олег',2);
Ответ
Нужен INNER JOIN cities и users по city_id. Но сначала исправьте DDL: круглые скобки, запятые между полями и строками VALUES.
После создания таблиц запрос выглядит так:
SELECT c.name AS city, u.name AS user_name
FROM cities c
JOIN users u ON u.city_id = c.id
ORDER BY c.id, u.id;
Для исправленных данных выводятся Москва — Иван, Москва — Анна, Санкт-Петербург — Олег. В исходном названии города пропущена буква б; SQL сам её не исправляет. Краснодар без пользователей не попадёт в INNER JOIN. Если требуется его сохранить с NULL вместо имени, используйте LEFT JOIN. Показанный исходный скрипт с фигурными скобками не выполнится как обычный PostgreSQL SQL.