Получить названия городов вместе с именами их жителей

Нужен 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее