>_ IzzyLab

Практическое задание

SQLite: INNER JOIN двух таблиц

средне

В базе /root/shop.db есть таблицы customers(id, name) и orders(id, customer_id, amount). Составь запрос с INNER JOIN, который для каждого заказа выводит имя клиента и сумму заказа, и запиши результат в /root/out.txt.

В выборку должны попасть только те клиенты, у кого есть заказы (у клиента без заказов строк быть не должно). Формат строк по умолчанию — имя|сумма.

Что потренируешь:
  • sqlite3
  • inner join
  • on-условие
  • связь таблиц
  • внешний ключ

Разбор темы

Реляционная модель хранит связанные данные в разных таблицах, а собирает их обратно операция соединения. INNER JOIN берёт строки двух таблиц и оставляет только те пары, где выполнено ON-условие связи по общему полю (обычно внешний ключ одной таблицы равен первичному ключу другой). Строки, у которых нет пары на другой стороне, во внутреннее соединение не попадают — этим оно отличается от LEFT JOIN. Результат выборки перенаправляется в файл обычным >.

Что проверяется

  1. в результате есть пары имя|сумма для всех заказов
  2. клиент без заказов не попал в результат

Как это выглядит